Man page - clone(2)
Packages contains this manual
- __malloc_initialize_hook(3)
- getpwuid(3)
- frexpl(3)
- fchown(2)
- setttyent(3)
- pthread_attr_setstacksize(3)
- calloc(3)
- clog(3)
- seteuid(2)
- res_nquerydomain(3)
- y0l(3)
- catanl(3)
- catanh(3)
- inet_addr(3)
- getcwd(2)
- epoll_create1(2)
- atol(3)
- pciconfig_write(2)
- htonl(3)
- timer_settime(2)
- munmap(2)
- cexpl(3)
- rt_sigsuspend(2)
- msgctl(2)
- tan(3)
- get_mempolicy(2)
- roundf(3)
- towctrans(3)
- xdr_opaque(3)
- psignal(3)
- error_at_line(3)
- xdrmem_create(3)
- select(2)
- getdate_r(3)
- getprotobyname_r(3)
- nrand48_r(3)
- inet_netof(3)
- inet_ntoa(3)
- nextafterl(3)
- innetgr(3)
- on_exit(3)
- expm1l(3)
- strfmon(3)
- strdup(3)
- getservbyport(3)
- arch_prctl(2)
- j0(3)
- wait4(2)
- personality(2)
- bpf(2)
- pvalloc(3)
- getresuid32(2)
- des_setparity(3)
- prctl(2)
- clog10(3)
- aio_init(3)
- pthread_getconcurrency(3)
- csinl(3)
- linkat(2)
- vsscanf(3)
- isascii(3)
- xdr_union(3)
- nan(3)
- utimensat(2)
- ioctl_vt(2)
- _newselect(2)
- ldexpl(3)
- fabsf(3)
- chown(2)
- mkstemps(3)
- pthread_attr_getstacksize(3)
- listxattr(2)
- getpgrp(2)
- xdr_short(3)
- tcflush(3)
- pthread_cond_wait(3)
- argz_add(3)
- wcpncpy(3)
- reallocarray(3)
- llrintf(3)
- outsl(2)
- qsort(3)
- authnone_create(3)
- tzname(3)
- setresuid32(2)
- isspace(3)
- open_by_handle_at(2)
- drem(3)
- conjf(3)
- nanosleep(2)
- pthread_kill(3)
- putc(3)
- pthread_condattr_destroy(3)
- getpwuid_r(3)
- strverscmp(3)
- res_init(3)
- cacosl(3)
- qecvt_r(3)
- iswgraph(3)
- gethostbyname(3)
- ntohl(3)
- acct(2)
- asinl(3)
- envz_merge(3)
- strdupa(3)
- idle(2)
- getopt_long_only(3)
- hstrerror(3)
- fanotify_init(2)
- fputs_unlocked(3)
- sleep(3)
- vfprintf(3)
- scalb(3)
- nanl(3)
- lchown32(2)
- getnetent_r(3)
- fcntl(2)
- inw(2)
- rintl(3)
- arc4random(3)
- getsockopt(2)
- ilogbl(3)
- clog2(3)
- encrypt(3)
- sqrtf(3)
- isspace_l(3)
- tanl(3)
- cfmakeraw(3)
- assert(3)
- strtoull(3)
- xdrstdio_create(3)
- optopt(3)
- setrlimit(2)
- lround(3)
- xdr_accepted_reply(3)
- fmin(3)
- mq_notify(3)
- svcerr_auth(3)
- sbrk(2)
- recv(2)
- mq_unlink(2)
- strxfrm(3)
- ctan(3)
- atoi(3)
- xcrypt(3)
- sgetspent(3)
- fread(3)
- isless(3)
- ceil(3)
- pthread_cond_broadcast(3)
- oldfstat(2)
- outl(2)
- times(2)
- wcslen(3)
- popen(3)
- wprintf(3)
- labs(3)
- getrpcbynumber(3)
- shmat(2)
- clock_gettime(2)
- btree(3)
- s390_sthyi(2)
- siggetmask(3)
- getgid32(2)
- puts(3)
- scalblnl(3)
- strpbrk(3)
- catanhl(3)
- vlimit(3)
- getrpcent(3)
- tgammal(3)
- strtoll(3)
- funlockfile(3)
- xdecrypt(3)
- pthread_key_delete(3)
- setgrent(3)
- wmemmove(3)
- gnu_dev_major(3)
- regexec(3)
- lrintl(3)
- __ppc_set_ppr_med(3)
- rmdir(2)
- io_getevents(2)
- request_key(2)
- ecvt(3)
- __ppc_mdoom(3)
- mktemp(3)
- key_gendes(3)
- le64toh(3)
- statvfs(3)
- rpc(3)
- getdate_err(3)
- munlockall(2)
- close(2)
- xdr_rejected_reply(3)
- dlerror(3)
- le32toh(3)
- feclearexcept(3)
- insque(3)
- clntraw_create(3)
- getutid(3)
- strtof(3)
- settimeofday(2)
- mkdir(2)
- rewind(3)
- logf(3)
- tmpnam(3)
- iswpunct(3)
- wcrtomb(3)
- epoll_pwait(2)
- getitimer(2)
- wordexp(3)
- clog2f(3)
- capset(2)
- strrchr(3)
- outsb(2)
- freeifaddrs(3)
- getwc_unlocked(3)
- ustat(2)
- bswap_16(3)
- program_invocation_short_name(3)
- ldiv(3)
- exp10f(3)
- vprintf(3)
- wcsncpy(3)
- iscntrl(3)
- readlink(2)
- semget(2)
- connect(2)
- psiginfo(3)
- epoll_ctl(2)
- removexattr(2)
- envz_strip(3)
- fgetxattr(2)
- atexit(3)
- putgrent(3)
- bswap(3)
- getegid32(2)
- qecvt(3)
- asinh(3)
- isfdtype(3)
- setenv(3)
- readdir(3)
- rtime(3)
- nearbyint(3)
- getgroups32(2)
- statx(2)
- modify_ldt(2)
- cpow(3)
- eventfd_read(3)
- sendfile64(2)
- getnetbyname(3)
- fremovexattr(2)
- uselib(2)
- inet(3)
- endutxent(3)
- clnt_spcreateerror(3)
- pututline(3)
- nexttowardl(3)
- getipnodebyaddr(3)
- fts_set(3)
- memmem(3)
- fmodl(3)
- setfsuid32(2)
- wordfree(3)
- fadvise64(2)
- getppid(2)
- qsort_r(3)
- toupper(3)
- getwc(3)
- fputws(3)
- mrand48(3)
- preadv(2)
- sincosf(3)
- fstatat64(2)
- dirfd(3)
- jnf(3)
- static_assert(3)
- wctype(3)
- vwarn(3)
- setfsent(3)
- listen(2)
- wcstok(3)
- argz_insert(3)
- select_tut(2)
- ctanl(3)
- getunwind(2)
- difftime(3)
- daylight(3)
- sigpause(3)
- wcscat(3)
- dlclose(3)
- __ppc_set_ppr_med_low(3)
- pread(2)
- fstatvfs(3)
- cbrtf(3)
- strnlen(3)
- sinhl(3)
- inl_p(2)
- setregid32(2)
- putwc(3)
- register_printf_type(3)
- nextafterf(3)
- opendir(3)
- strtod(3)
- tgamma(3)
- malloc_get_state(3)
- aio_write(3)
- timezone(3)
- xdr_pmaplist(3)
- sysfs(2)
- index(3)
- svcerr_noproc(3)
- envz(3)
- klogctl(3)
- pselect(2)
- get_current_dir_name(3)
- xdr_char(3)
- asinhf(3)
- preadv2(2)
- inotify_init1(2)
- pthread_attr_setstackaddr(3)
- getline(3)
- tanhf(3)
- rtnetlink(3)
- pkey_alloc(2)
- edata(3)
- stailq(3)
- isastream(2)
- setregid(2)
- copy_file_range(2)
- rcmd_af(3)
- futex(2)
- prof(2)
- siglongjmp(3)
- hdestroy(3)
- catan(3)
- pthread_cond_signal(3)
- mkfifoat(3)
- clntudp_create(3)
- getentropy(3)
- vsprintf(3)
- fabs(3)
- lseek64(3)
- pthread_setname_np(3)
- conjl(3)
- chroot(2)
- ccoshf(3)
- erand48_r(3)
- wcsnrtombs(3)
- rindex(3)
- fputc_unlocked(3)
- setresgid32(2)
- gettimeofday(2)
- cexp(3)
- inotify_add_watch(2)
- set_robust_list(2)
- nice(2)
- strtold(3)
- mq_getattr(3)
- xdr(3)
- getxattr(2)
- getrandom(2)
- splice(2)
- strerror(3)
- fcntl64(2)
- fnmatch(3)
- ungetwc(3)
- getspnam_r(3)
- clearenv(3)
- atan2(3)
- get_myaddress(3)
- open(2)
- pthread_setcancelstate(3)
- newlocale(3)
- open_memstream(3)
- setprotoent(3)
- logbf(3)
- ilogb(3)
- wmemcpy(3)
- tcsendbreak(3)
- be16toh(3)
- perfmonctl(2)
- strtoq(3)
- getgrgid_r(3)
- pthread_timedjoin_np(3)
- memfd_create(2)
- getttynam(3)
- mcheck_pedantic(3)
- _llseek(2)
- renameat2(2)
- ioperm(2)
- ecb_crypt(3)
- pthread_condattr_init(3)
- fminl(3)
- lio_listio(3)
- envz_add(3)
- setbuf(3)
- setkey(3)
- expm1(3)
- strtoul(3)
- getcwd(3)
- setutxent(3)
- getrpcent_r(3)
- unimplemented(2)
- fclose(3)
- epoll_create(2)
- getfsent(3)
- key_secretkey_is_set(3)
- vserver(2)
- vswprintf(3)
- sigsuspend(2)
- pututxline(3)
- clnt_freeres(3)
- cacheflush(2)
- ioprio_set(2)
- alarm(2)
- fgetc(3)
- __fpurge(3)
- getlogin_r(3)
- vfork(2)
- bstring(3)
- div(3)
- getrusage(2)
- gettid(2)
- dprintf(3)
- strtoumax(3)
- jrand48(3)
- iswcntrl(3)
- vwarnx(3)
- cacos(3)
- ccoshl(3)
- fesetexceptflag(3)
- res_nclose(3)
- shmop(2)
- mcheck_check_all(3)
- vscanf(3)
- tolower(3)
- landlock_add_rule(2)
- argz_next(3)
- lroundl(3)
- ruserok(3)
- glob(3)
- brk(2)
- rename(2)
- strcspn(3)
- sched_getscheduler(2)
- wcstoumax(3)
- dbopen(3)
- xdr_bytes(3)
- fegetenv(3)
- scalbf(3)
- pkey_free(2)
- fgetgrent(3)
- strchrnul(3)
- fork(2)
- log1pf(3)
- strtoimax(3)
- fputs(3)
- putspent(3)
- ttyname_r(3)
- iswlower(3)
- epoll_wait(2)
- minor(3)
- wcsspn(3)
- sendmmsg(2)
- pthread_attr_getsigmask_np(3)
- erand48(3)
- setpgrp(2)
- db(3)
- readv(2)
- cimagf(3)
- pthread_sigmask(3)
- getresuid(2)
- gamma(3)
- logwtmp(3)
- imaxabs(3)
- y1(3)
- swapoff(2)
- svcerr_weakauth(3)
- mbtowc(3)
- madvise(2)
- __fbufsize(3)
- swapon(2)
- towlower(3)
- asin(3)
- initgroups(3)
- svc_getreqset(3)
- pthread_attr_destroy(3)
- scalblnf(3)
- ispunct(3)
- casin(3)
- xdr_pmap(3)
- sigvec(3)
- dlmopen(3)
- localeconv(3)
- tcgetattr(3)
- mempcpy(3)
- clnt_perrno(3)
- clock_getcpuclockid(3)
- setaliasent(3)
- clock(3)
- ftok(3)
- svc_run(3)
- getsubopt(3)
- coshf(3)
- pow(3)
- getpwent(3)
- ntp_gettime(3)
- xdrrec_skiprecord(3)
- symlink(2)
- shmctl(2)
- mq_timedreceive(2)
- malloc(3)
- tgkill(2)
- l64a(3)
- unlockpt(3)
- mallopt(3)
- creal(3)
- syscalls(2)
- set_tid_address(2)
- exp2f(3)
- fstatfs(2)
- statfs(2)
- dreml(3)
- feenableexcept(3)
- ftw(3)
- fanotify_mark(2)
- clnt_sperror(3)
- realpath(3)
- sysconf(3)
- _syscall(2)
- set_mempolicy(2)
- mq_unlink(3)
- freehostent(3)
- rresvport_af(3)
- nl_langinfo_l(3)
- fmaxl(3)
- iscntrl_l(3)
- copysignf(3)
- llseek(2)
- bzero(3)
- ioctl_fsmap(2)
- remquof(3)
- malloc_trim(3)
- pthread_getattr_default_np(3)
- isalnum_l(3)
- mlock(2)
- nearbyintf(3)
- confstr(3)
- sinf(3)
- ioctl_eventpoll(2)
- sigstack(3)
- seed48_r(3)
- utmpname(3)
- malloc_stats(3)
- stpncpy(3)
- getservbyport_r(3)
- cabsl(3)
- isblank(3)
- sigprocmask(2)
- isinfl(3)
- isinff(3)
- pathconf(3)
- xdr_u_short(3)
- acos(3)
- timerfd_create(2)
- key_encryptsession(3)
- log2f(3)
- oldlstat(2)
- res_querydomain(3)
- memcmp(3)
- gethostbyaddr(3)
- sighold(3)
- gtty(2)
- xdr_void(3)
- getmsg(2)
- io_setup(2)
- ttyslot(3)
- recno(3)
- cuserid(3)
- nanf(3)
- pthread_getaffinity_np(3)
- if_indextoname(3)
- remainderf(3)
- putpwent(3)
- pow10f(3)
- pwritev(2)
- swapcontext(3)
- cfsetospeed(3)
- envz_remove(3)
- cosh(3)
- a64l(3)
- uselocale(3)
- yn(3)
- msgget(2)
- pthread_equal(3)
- prlimit(2)
- setspent(3)
- newfstatat(2)
- renameat(2)
- truncf(3)
- pthread_yield(3)
- tkill(2)
- islessequal(3)
- isnanf(3)
- sethostent(3)
- setvbuf(3)
- gnu_get_libc_release(3)
- atoll(3)
- getgrnam(3)
- get_robust_list(2)
- __ppc_yield(3)
- __memalign_hook(3)
- eventfd2(2)
- mq_setattr(3)
- tmpnam_r(3)
- pmap_getport(3)
- svcfd_create(3)
- getfsspec(3)
- setgid(2)
- getlogin(3)
- get_nprocs(3)
- canonicalize_file_name(3)
- pthread_mutexattr_getrobust(3)
- strerrorname_np(3)
- csinh(3)
- malloc_set_state(3)
- tcgetsid(3)
- ssignal(3)
- secure_getenv(3)
- significandl(3)
- wcschr(3)
- isgraph(3)
- pthread_mutexattr_gettype(3)
- creat(2)
- cabsf(3)
- __ppc_set_ppr_med_high(3)
- fchdir(2)
- backtrace_symbols(3)
- exp10l(3)
- euidaccess(3)
- sync_file_range(2)
- getutxline(3)
- isdigit(3)
- sinhf(3)
- lgetxattr(2)
- getaliasent(3)
- memrchr(3)
- io_submit(2)
- clnt_create(3)
- __setfpucw(3)
- _flushlbf(3)
- lcong48_r(3)
- clog10l(3)
- pmap_getmaps(3)
- memalign(3)
- xdr_authunix_parms(3)
- execl(3)
- getdate(3)
- cfsetispeed(3)
- tanhl(3)
- wmempcpy(3)
- outw_p(2)
- faccessat(2)
- rresvport(3)
- nextup(3)
- fgetgrent_r(3)
- getopt(3)
- xdr_vector(3)
- aio_error(3)
- frexpf(3)
- getpw(3)
- sscanf(3)
- mprotect(2)
- exp(3)
- sched_getaffinity(2)
- accept4(2)
- remainderl(3)
- pthread_key_create(3)
- endian(3)
- setmntent(3)
- get_phys_pages(3)
- argz(3)
- _exit(2)
- towupper_l(3)
- lrand48(3)
- csqrt(3)
- hdestroy_r(3)
- remquo(3)
- feof_unlocked(3)
- isprint(3)
- pivot_root(2)
- arc4random_uniform(3)
- strfroml(3)
- getdomainname(2)
- va_end(3)
- getresgid(2)
- cosf(3)
- endhostent(3)
- setgid32(2)
- ioctl_fs(2)
- getaddrinfo(3)
- fgetwc(3)
- lock(2)
- getservbyname_r(3)
- sys_nerr(3)
- insb(2)
- usleep(3)
- security(2)
- cfree(3)
- tanf(3)
- fprintf(3)
- pthread_mutexattr_setpshared(3)
- xprt_unregister(3)
- alphasort(3)
- getgrent(3)
- scandirat(3)
- iruserok(3)
- ttyname(3)
- tdestroy(3)
- strcasecmp(3)
- getpgid(2)
- drand48_r(3)
- mmap(2)
- sigtimedwait(2)
- pthread_once(3)
- mq_receive(3)
- pthread_mutexattr_setkind_np(3)
- iopl(2)
- s390_runtime_instr(2)
- lckpwdf(3)
- memmove(3)
- __fpending(3)
- mbsrtowcs(3)
- restart_syscall(2)
- memset(3)
- significandf(3)
- openat2(2)
- timeradd(3)
- conj(3)
- flockfile(3)
- madvise1(2)
- inet_aton(3)
- fstatfs64(2)
- fmax(3)
- fmemopen(3)
- fmaf(3)
- lseek(2)
- registerrpc(3)
- kexec_file_load(2)
- gammal(3)
- feof(3)
- pidfd_open(2)
- crealf(3)
- clogl(3)
- getutmp(3)
- umount(2)
- inet_pton(3)
- flistxattr(2)
- xdr_wrapstring(3)
- socketcall(2)
- setrpcent(3)
- rint(3)
- vm86(2)
- sincosl(3)
- getprotoent_r(3)
- mknod(2)
- getdents64(2)
- gai_cancel(3)
- srandom_r(3)
- getnetbyname_r(3)
- sigaddset(3)
- htole16(3)
- endnetent(3)
- nextafter(3)
- timerisset(3)
- getgrent_r(3)
- freeaddrinfo(3)
- endprotoent(3)
- mbind(2)
- sigorset(3)
- pthread_rwlockattr_setkind_np(3)
- cimag(3)
- waitid(2)
- abs(3)
- unlink(2)
- recvmsg(2)
- getaliasbyname(3)
- wctrans(3)
- kill(2)
- strtol(3)
- __ppc_set_ppr_very_low(3)
- membarrier(2)
- getnetbyaddr_r(3)
- writev(2)
- errx(3)
- tfind(3)
- clone3(2)
- __freading(3)
- outw(2)
- regfree(3)
- accept(2)
- timer_getoverrun(2)
- shmdt(2)
- svcerr_decode(3)
- getnameinfo(3)
- endusershell(3)
- execvpe(3)
- cbc_crypt(3)
- res_send(3)
- xdr_destroy(3)
- getcontext(3)
- pkey_mprotect(2)
- twalk_r(3)
- isalnum(3)
- timercmp(3)
- setxattr(2)
- pthread_cleanup_pop_restore_np(3)
- stat(2)
- isupper(3)
- vsyslog(3)
- strlen(3)
- pthread_attr_setinheritsched(3)
- xdr_inline(3)
- strtouq(3)
- raise(3)
- getpeername(2)
- capget(2)
- atanl(3)
- ferror_unlocked(3)
- isxdigit_l(3)
- modfl(3)
- pthread_mutexattr_init(3)
- pthread_mutexattr_getkind_np(3)
- phys(2)
- llabs(3)
- sched_rr_get_interval(2)
- asprintf(3)
- explicit_bzero(3)
- asctime(3)
- clone(2)
- munlock(2)
- __realloc_hook(3)
- atof(3)
- rt_tgsigqueueinfo(2)
- syslog(2)
- inet_makeaddr(3)
- epoll_pwait2(2)
- iswalpha(3)
- netlink(3)
- sched_setattr(2)
- sigdescr_np(3)
- access(2)
- getc_unlocked(3)
- dysize(3)
- inet_net_pton(3)
- sched_setparam(2)
- timerfd_settime(2)
- nexttowardf(3)
- expf(3)
- svcerr_progvers(3)
- getwchar(3)
- ftime(3)
- if_nametoindex(3)
- argz_add_sep(3)
- vasprintf(3)
- unlinkat(2)
- putenv(3)
- pthread_mutexattr_setrobust_np(3)
- error_message_count(3)
- setfsgid(2)
- cmsg(3)
- setpwent(3)
- cfgetospeed(3)
- end(3)
- pidfd_send_signal(2)
- scalbn(3)
- closelog(3)
- srandom(3)
- argz_replace(3)
- ioctl_tty(2)
- va_arg(3)
- towlower_l(3)
- isblank_l(3)
- remove(3)
- expl(3)
- fscanf(3)
- versionsort(3)
- pow10(3)
- hsearch(3)
- gethostid(3)
- fchownat(2)
- group_member(3)
- getchar_unlocked(3)
- getservbyname(3)
- pthread_mutexattr_destroy(3)
- setpgid(2)
- acosf(3)
- ctanhf(3)
- shm_open(3)
- towupper(3)
- getdents(2)
- chown32(2)
- hypotf(3)
- undocumented(3)
- drand48(3)
- csinf(3)
- ctime_r(3)
- setlinebuf(3)
- ulimit(3)
- spu_create(2)
- fcvt_r(3)
- ipc(2)
- ftruncate64(2)
- fdopen(3)
- svcerr_noprog(3)
- getrpcport(3)
- csin(3)
- sinh(3)
- nrand48(3)
- openpty(3)
- xdr_double(3)
- pthread_attr_getscope(3)
- vfscanf(3)
- catanhf(3)
- inb(2)
- wcpcpy(3)
- ldexp(3)
- getopt_long(3)
- strerrordesc_np(3)
- mbsinit(3)
- argz_stringify(3)
- setbuffer(3)
- byteorder(3)
- expm1f(3)
- pthread_attr_setscope(3)
- gnu_dev_makedev(3)
- pipe(2)
- updwtmp(3)
- fts_read(3)
- ioctl_fat(2)
- h_errno(3)
- sem_getvalue(3)
- iswupper(3)
- lrint(3)
- perror(3)
- xdr_u_int(3)
- timer_create(2)
- iswdigit(3)
- fgetspent(3)
- fwrite_unlocked(3)
- reboot(2)
- ftruncate(2)
- getutmpx(3)
- pwrite64(2)
- getauxval(3)
- xdr_pointer(3)
- getprotobynumber(3)
- svc_destroy(3)
- vmsplice(2)
- inet_network(3)
- readdir_r(3)
- setsockopt(2)
- rexec(3)
- flock(2)
- getw(3)
- mmap2(2)
- j1f(3)
- cprojf(3)
- mkstemp(3)
- symlinkat(2)
- tempnam(3)
- pthread_attr_getaffinity_np(3)
- gethostbyname_r(3)
- signalfd4(2)
- sys_siglist(3)
- erfc(3)
- truncate64(2)
- verr(3)
- pthread_kill_other_threads_np(3)
- eaccess(3)
- fsetpos(3)
- slist(3)
- pmap_unset(3)
- modf(3)
- ioctl_pipe(2)
- vfwprintf(3)
- getresgid32(2)
- statfs64(2)
- cexp2(3)
- stdio_ext(3)
- login_tty(3)
- xdr_long(3)
- dlsym(3)
- clog2l(3)
- malloc_usable_size(3)
- fegetexceptflag(3)
- basename(3)
- fwrite(3)
- vhangup(2)
- printf(3)
- setnetent(3)
- gethostbyname2(3)
- mallinfo2(3)
- signbit(3)
- clnt_broadcast(3)
- sched_yield(2)
- sem_open(3)
- sigsetjmp(3)
- cacoshl(3)
- sem_unlink(3)
- setresuid(2)
- signgam(3)
- putw(3)
- imaxdiv(3)
- regex(3)
- alloc_hugepages(2)
- modff(3)
- exp10(3)
- cprojl(3)
- utime(2)
- clogf(3)
- pthread_mutex_unlock(3)
- erff(3)
- ioctl_userfaultfd(2)
- iswprint(3)
- roundl(3)
- sqrtl(3)
- fpurge(3)
- getusershell(3)
- fcloseall(3)
- xdr_opaque_auth(3)
- gethostent_r(3)
- fgetwc_unlocked(3)
- fchmod(2)
- strptime(3)
- lutimes(3)
- htole64(3)
- putchar_unlocked(3)
- create_module(2)
- isascii_l(3)
- sigaction(2)
- stdout(3)
- geteuid32(2)
- xprt_register(3)
- freopen(3)
- ccosl(3)
- pthread_setschedprio(3)
- rt_sigaction(2)
- getmntent(3)
- putwchar_unlocked(3)
- logl(3)
- remque(3)
- unsetenv(3)
- sigwaitinfo(2)
- pthread_mutexattr_getrobust_np(3)
- initstate_r(3)
- getfsfile(3)
- exp2l(3)
- isatty(3)
- lgamma_r(3)
- lrintf(3)
- outb(2)
- __clone2(2)
- strcpy(3)
- clnt_call(3)
- hypot(3)
- fegetexcept(3)
- tcsetpgrp(3)
- gets(3)
- malloc_info(3)
- nextupf(3)
- pthread_attr_getdetachstate(3)
- getaliasent_r(3)
- fstat64(2)
- futimesat(2)
- dl_iterate_phdr(3)
- posix_madvise(3)
- endnetgrent(3)
- tolower_l(3)
- pthread_attr_setstack(3)
- pread64(2)
- sigsetops(3)
- stty(2)
- process_vm_readv(2)
- isfinite(3)
- gethostbyaddr_r(3)
- cproj(3)
- gai_strerror(3)
- key_decryptsession(3)
- inet_ntop(3)
- __ppc_mdoio(3)
- btowc(3)
- setstate_r(3)
- if_nameindex(3)
- fdetach(2)
- random_r(3)
- iruserok_af(3)
- truncl(3)
- clearerr(3)
- lgammaf(3)
- lfind(3)
- ctanf(3)
- strcat(3)
- pthread_attr_getschedpolicy(3)
- pthread_rwlockattr_getkind_np(3)
- sigrelse(3)
- daemon(3)
- pthread_setcanceltype(3)
- sigevent(7)
- iswalnum(3)
- pmap_set(3)
- stdin(3)
- ceilf(3)
- asctime_r(3)
- poll(2)
- svc_unregister(3)
- isnanl(3)
- carg(3)
- getprotobyname(3)
- arm_fadvise(2)
- optind(3)
- mount_setattr(2)
- dlvsym(3)
- ntp_adjtime(3)
- abort(3)
- pthread_getname_np(3)
- execlp(3)
- bind(2)
- bsearch(3)
- endspent(3)
- register_printf_specifier(3)
- landlock_create_ruleset(2)
- mkostemp(3)
- setgroups(2)
- toupper_l(3)
- argz_extract(3)
- sigblock(3)
- j0l(3)
- argz_delete(3)
- setusershell(3)
- getspnam(3)
- optarg(3)
- vm86old(2)
- sigandset(3)
- getdtablesize(3)
- getsockname(2)
- pthread_sigqueue(3)
- ptsname(3)
- j1(3)
- lgamma(3)
- getpagesize(2)
- pthread_mutex_lock(3)
- setsid(2)
- strncat(3)
- ioctl_kd(2)
- tsearch(3)
- mq_notify(2)
- fcvt(3)
- clntudp_bufcreate(3)
- getpwent_r(3)
- pthread_getspecific(3)
- memfrob(3)
- arc4random_buf(3)
- forkpty(3)
- powl(3)
- dlopen(3)
- stderr(3)
- set_thread_area(2)
- query_module(2)
- sem_close(3)
- strndup(3)
- __malloc_hook(3)
- setjmp(3)
- stdio(3)
- bdflush(2)
- sendto(2)
- mpx(2)
- fopen(3)
- setpriority(2)
- nextdownl(3)
- mprobe(3)
- oldstat(2)
- sem_destroy(3)
- bcopy(3)
- remap_file_pages(2)
- isgreaterequal(3)
- getpass(3)
- seekdir(3)
- break(2)
- authunix_create_default(3)
- tty_ioctl(4)
- process_madvise(2)
- endfsent(3)
- atoq(3)
- strftime(3)
- fts(3)
- getgrgid(3)
- isxdigit(3)
- ftello(3)
- regcomp(3)
- error(3)
- getenv(3)
- clnt_sperrno(3)
- readahead(2)
- y0(3)
- roundup(3)
- io_destroy(2)
- vsnprintf(3)
- lgammal(3)
- eventfd_write(3)
- pthread_mutex_trylock(3)
- lchown(2)
- dladdr(3)
- error_print_progname(3)
- pthread_mutexattr_settype(3)
- strspn(3)
- __after_morecore_hook(3)
- localtime(3)
- fsync(2)
- ether_aton(3)
- csinhl(3)
- trunc(3)
- xdr_u_char(3)
- syslog(3)
- y1f(3)
- ioctl_nsfs(2)
- wmemcmp(3)
- ffsll(3)
- ether_ntohost(3)
- bswap_32(3)
- umount2(2)
- sigfillset(3)
- landlock_restrict_self(2)
- pthread_join(3)
- sysinfo(2)
- clock_settime(2)
- llrint(3)
- s390_guarded_storage(2)
- getc(3)
- inet_lnaof(3)
- tcgetpgrp(3)
- clock_getres(2)
- etext(3)
- strfmon_l(3)
- putwc_unlocked(3)
- xdr_replymsg(3)
- scalbl(3)
- fdim(3)
- getspent(3)
- sem_timedwait(3)
- posix_fallocate(3)
- res_nmkquery(3)
- pthread_spin_unlock(3)
- mq_timedsend(2)
- opterr(3)
- getloadavg(3)
- strsignal(3)
- finite(3)
- inw_p(2)
- csinhf(3)
- execveat(2)
- seed48(3)
- sigset(3)
- setgroups32(2)
- logbl(3)
- wcsdup(3)
- clnt_geterr(3)
- sys_errlist(3)
- inotify_rm_watch(2)
- qgcvt(3)
- wcspbrk(3)
- sin(3)
- lookup_dcookie(2)
- s390_pci_mmio_read(2)
- wcscmp(3)
- getutxent(3)
- pciconfig_read(2)
- initstate(3)
- backtrace(3)
- putc_unlocked(3)
- fedisableexcept(3)
- rt_sigprocmask(2)
- clock_adjtime(2)
- fwprintf(3)
- jnl(3)
- grantpt(3)
- cimagl(3)
- getgrnam_r(3)
- remquol(3)
- swprintf(3)
- mbrtowc(3)
- fileno_unlocked(3)
- readlinkat(2)
- sigignore(3)
- strndupa(3)
- semctl(2)
- assert_perror(3)
- sendfile(2)
- shm_unlink(3)
- log(3)
- ungetc(3)
- erf(3)
- qfcvt(3)
- pthread_atfork(3)
- login(3)
- setservent(3)
- jrand48_r(3)
- wcsnlen(3)
- tcflow(3)
- pthread_cond_destroy(3)
- inl(2)
- srand48_r(3)
- erfcf(3)
- iconv(3)
- pthread_mutex_consistent_np(3)
- fabsl(3)
- pclose(3)
- nfsservctl(2)
- gai_error(3)
- wcsncmp(3)
- islower_l(3)
- iswctype(3)
- svc_register(3)
- arm_sync_file_range(2)
- strfry(3)
- strfromd(3)
- getttyent(3)
- rand(3)
- fchown32(2)
- ctime(3)
- fsetxattr(2)
- feupdateenv(3)
- random(3)
- getpwnam_r(3)
- sigwait(3)
- aio_fsync(3)
- mq_open(2)
- tanh(3)
- localtime_r(3)
- bsd_signal(3)
- strsep(3)
- mknodat(2)
- cexpf(3)
- cacosh(3)
- mbrlen(3)
- aio_cancel(3)
- mq_getsetattr(2)
- fdatasync(2)
- htons(3)
- sem_post(3)
- htobe16(3)
- vtimes(3)
- fgetpwent_r(3)
- getwchar_unlocked(3)
- mkdirat(2)
- dup(2)
- free_hugepages(2)
- feraiseexcept(3)
- lockf(3)
- userfaultfd(2)
- pthread_attr_setaffinity_np(3)
- memcpy(3)
- prlimit64(2)
- ferror(3)
- ldexpf(3)
- aio_return(3)
- adjtimex(2)
- execle(3)
- tailq(3)
- cabs(3)
- endaliasent(3)
- execvp(3)
- hasmntopt(3)
- if_freenameindex(3)
- signal(2)
- dn_comp(3)
- pthread_attr_getstack(3)
- ether_hostton(3)
- re_comp(3)
- cexp2l(3)
- getwd(3)
- llroundl(3)
- cos(3)
- pthread_mutex_consistent(3)
- isalpha_l(3)
- io_cancel(2)
- frexp(3)
- finitel(3)
- perf_event_open(2)
- pthread_exit(3)
- ioctl_console(2)
- timelocal(3)
- timersub(3)
- setresgid(2)
- semop(2)
- getgroups(2)
- envz_entry(3)
- xdr_u_long(3)
- seccomp(2)
- ftrylockfile(3)
- setuid(2)
- wcwidth(3)
- llround(3)
- cacoshf(3)
- pthread_attr_setschedpolicy(3)
- fgetpos(3)
- xdr_array(3)
- sprintf(3)
- wmemset(3)
- setcontext(3)
- copysignl(3)
- be64toh(3)
- matherr(3)
- hypotl(3)
- rawmemchr(3)
- fmodf(3)
- mount(2)
- mktime(3)
- stdarg(3)
- clnttcp_create(3)
- string(3)
- profil(3)
- clnt_perror(3)
- getpriority(2)
- regerror(3)
- clone2(2)
- getgid(2)
- pthread_spin_lock(3)
- iswblank(3)
- ftell(3)
- dup3(2)
- toascii(3)
- strncpy(3)
- mrand48_r(3)
- setstate(3)
- sigqueue(3)
- cpowf(3)
- setlogmask(3)
- sched_getcpu(3)
- htobe32(3)
- list(3)
- isdigit_l(3)
- chdir(2)
- fstat(2)
- pwritev2(2)
- get_thread_area(2)
- freelocale(3)
- acoshl(3)
- socketpair(2)
- scalbln(3)
- fpclassify(3)
- getpwnam(3)
- pthread_getcpuclockid(3)
- ioprio_get(2)
- strtok_r(3)
- exit_group(2)
- scalbnf(3)
- xdrrec_create(3)
- pthread_mutex_destroy(3)
- sqrt(3)
- dirname(3)
- exit(2)
- ulckpwdf(3)
- cargl(3)
- powerof2(3)
- simpleq(3)
- process_vm_writev(2)
- fdopendir(3)
- getpt(3)
- floorl(3)
- va_start(3)
- lcong48(3)
- strerror_l(3)
- xdrrec_eof(3)
- key_setsecret(3)
- lstat64(2)
- memfd_secret(2)
- sigreturn(2)
- casinhf(3)
- valloc(3)
- stat64(2)
- jn(3)
- sinl(3)
- pthread_testcancel(3)
- cfgetispeed(3)
- dup2(2)
- getnetent(3)
- pthread_setconcurrency(3)
- memccpy(3)
- rt_sigqueueinfo(2)
- ccosf(3)
- sincos(3)
- tcdrain(3)
- ccos(3)
- chmod(2)
- cacosf(3)
- lstat(2)
- pthread_spin_trylock(3)
- sigisemptyset(3)
- getrpcbyname(3)
- fpathconf(3)
- copysign(3)
- round(3)
- wmemchr(3)
- qfcvt_r(3)
- fattach(2)
- __fsetlocking(3)
- adjtime(3)
- makedev(3)
- des_crypt(3)
- iswspace(3)
- twalk(3)
- exec(3)
- link(2)
- fileno(3)
- endpwent(3)
- logb(3)
- wcscspn(3)
- console_ioctl(4)
- fgetpwent(3)
- setegid(2)
- clnt_destroy(3)
- getaddrinfo_a(3)
- svc_getargs(3)
- addmntent(3)
- globfree(3)
- islower(3)
- muntrace(3)
- clnt_pcreateerror(3)
- llrintl(3)
- clnt_control(3)
- fgetspent_r(3)
- strstr(3)
- putmsg(2)
- __fwritable(3)
- res_nsearch(3)
- fseeko(3)
- mq_timedreceive(3)
- log10(3)
- fexecve(3)
- gammaf(3)
- pthread_setschedparam(3)
- wcscpy(3)
- xdr_float(3)
- pthread_attr_setdetachstate(3)
- sem_wait(3)
- pow10l(3)
- re_exec(3)
- rand_r(3)
- putpmsg(2)
- getdelim(3)
- utimes(2)
- mq_close(3)
- setutent(3)
- creall(3)
- mq_send(3)
- telldir(3)
- powf(3)
- erfl(3)
- pthread_self(3)
- pselect6(2)
- unlocked_stdio(3)
- insw(2)
- cfsetspeed(3)
- argz_create(3)
- xdr_string(3)
- pthread_attr_getguardsize(3)
- finitef(3)
- setlocale(3)
- bcmp(3)
- fmtmsg(3)
- sendmsg(2)
- pthread_cleanup_push(3)
- inb_p(2)
- mmap64(3)
- getuid32(2)
- truncate(2)
- mlock2(2)
- fegetround(3)
- ugetrlimit(2)
- getprotobynumber_r(3)
- utmpxname(3)
- isinf(3)
- clearerr_unlocked(3)
- stime(2)
- nftw(3)
- duplocale(3)
- svcraw_create(3)
- svc_getcaller(3)
- ctanhl(3)
- cbrt(3)
- floorf(3)
- sethostid(3)
- sigemptyset(3)
- sigaltstack(2)
- mkfifo(3)
- lsearch(3)
- getservent_r(3)
- islessgreater(3)
- floor(3)
- argz_append(3)
- tzset(3)
- res_mkquery(3)
- fstatat(2)
- strchr(3)
- semtimedop(2)
- bindresvport(3)
- tcsetattr(3)
- warn(3)
- getservent(3)
- atanhl(3)
- tdelete(3)
- ynf(3)
- ether_ntoa_r(3)
- fesetenv(3)
- mq_timedsend(3)
- quotactl(2)
- init_module(2)
- rcmd(3)
- fenv(3)
- getutxid(3)
- pthread_mutexattr_getpshared(3)
- scalbnl(3)
- atan2l(3)
- argz_count(3)
- rpmatch(3)
- timerfd_gettime(2)
- ualarm(3)
- pthread_attr_init(3)
- vdprintf(3)
- pthread_cancel(3)
- fflush(3)
- setkey_r(3)
- mbstowcs(3)
- mremap(2)
- strcasestr(3)
- hcreate_r(3)
- siginterrupt(3)
- offsetof(3)
- atan(3)
- wctomb(3)
- getutent(3)
- significand(3)
- arm_fadvise64_64(2)
- dremf(3)
- wcswidth(3)
- syscall(2)
- rintf(3)
- bswap_64(3)
- pthread_attr_getschedparam(3)
- lroundf(3)
- timegm(3)
- posix_fadvise(2)
- getrlimit(2)
- svc_freeargs(3)
- xdr_enum(3)
- hcreate(3)
- ptrace(2)
- backtrace_symbols_fd(3)
- fetestexcept(3)
- ccosh(3)
- htole32(3)
- kexec_load(2)
- fallocate(2)
- timer_gettime(2)
- tgammaf(3)
- errno(3)
- sched_get_priority_max(2)
- xdr_getpos(3)
- vwprintf(3)
- ssetmask(2)
- ether_ntoa(3)
- waitpid(2)
- sched_getattr(2)
- inotify_init(2)
- fma(3)
- gnu_get_libc_version(3)
- svctcp_create(3)
- wcstombs(3)
- gethostname(2)
- strerror_r(3)
- sigismember(3)
- fgetws_unlocked(3)
- hash(3)
- circleq(3)
- getrpcbynumber_r(3)
- pthread_cond_timedwait(3)
- uname(2)
- fgetc_unlocked(3)
- mq_open(3)
- cosl(3)
- rewinddir(3)
- nextdown(3)
- longjmp(3)
- execv(3)
- iconv_open(3)
- xencrypt(3)
- ctermid(3)
- isgraph_l(3)
- move_pages(2)
- isunordered(3)
- msgsnd(2)
- rt_sigtimedwait(2)
- syncfs(2)
- mlockall(2)
- pthread_getschedparam(3)
- lsetxattr(2)
- getutid_r(3)
- log1pl(3)
- catanf(3)
- passwd2des(3)
- iconv_close(3)
- aligned_alloc(3)
- sched_setscheduler(2)
- gmtime(3)
- __free_hook(3)
- acoshf(3)
- mtrace(3)
- resolver(3)
- clog10f(3)
- sethostname(2)
- pthread_attr_setguardsize(3)
- tuxcall(2)
- atanh(3)
- ispunct_l(3)
- svcudp_bufcreate(3)
- ctanh(3)
- j1l(3)
- log10l(3)
- alloca(3)
- sigpending(2)
- nexttoward(3)
- isnormal(3)
- svc_getreq(3)
- putchar(3)
- getnetbyaddr(3)
- cpowl(3)
- get_kernel_syms(2)
- getutline_r(3)
- pthread_setaffinity_np(3)
- isnan(3)
- getprotoent(3)
- catclose(3)
- getsid(2)
- endrpcent(3)
- fts_close(3)
- gnu_dev_minor(3)
- ruserok_af(3)
- getutent_r(3)
- getegid(2)
- sgetmask(2)
- posix_memalign(3)
- atanf(3)
- unshare(2)
- lremovexattr(2)
- strncasecmp(3)
- endutent(3)
- updwtmpx(3)
- outsw(2)
- sched_getparam(2)
- setuid32(2)
- catgets(3)
- nextupl(3)
- openat(2)
- logout(3)
- free(3)
- setfsuid(2)
- getutline(3)
- svc_sendreply(3)
- fadvise64_64(2)
- cargf(3)
- __ppc_set_ppr_low(3)
- casinh(3)
- outb_p(2)
- fputwc(3)
- log10f(3)
- getnetgrent(3)
- fputws_unlocked(3)
- ffsl(3)
- endttyent(3)
- isgreater(3)
- sigmask(3)
- sgetspent_r(3)
- fmaxf(3)
- openlog(3)
- strncmp(3)
- closedir(3)
- rexec_af(3)
- exp2(3)
- mcheck(3)
- isalpha(3)
- pthread_mutex_init(3)
- catopen(3)
- clock_nanosleep(2)
- ioctl(2)
- remainder(3)
- olduname(2)
- getcpu(2)
- setns(2)
- asinhl(3)
- wcscasecmp(3)
- nearbyintl(3)
- atan2f(3)
- wctob(3)
- nextdownf(3)
- gmtime_r(3)
- fmal(3)
- setfsgid32(2)
- dlinfo(3)
- posix_spawnp(3)
- fgets_unlocked(3)
- major(3)
- fseek(3)
- xdr_callhdr(3)
- execve(2)
- exit(3)
- makecontext(3)
- sysctl(2)
- oldolduname(2)
- getgrouplist(3)
- pthread_getattr_np(3)
- ffs(3)
- sem_init(3)
- gcvt(3)
- fts_children(3)
- rt_sigreturn(2)
- mallinfo(3)
- insl(2)
- geteuid(2)
- signalfd(2)
- erfcl(3)
- sched_get_priority_min(2)
- sched_setaffinity(2)
- wcsrchr(3)
- xdr_reference(3)
- snprintf(3)
- delete_module(2)
- j0f(3)
- malloc_hook(3)
- casinf(3)
- y0f(3)
- endgrent(3)
- y1l(3)
- pthread_create(3)
- wcsncasecmp(3)
- pidfd_getfd(2)
- htobe64(3)
- _sysctl(2)
- lrand48_r(3)
- warnx(3)
- lgammaf_r(3)
- verrx(3)
- finit_module(2)
- gsignal(3)
- recvfrom(2)
- log2(3)
- fflush_unlocked(3)
- getaliasbyname_r(3)
- pthread_mutexattr_setrobust(3)
- getdirentries(3)
- getrpcbyname_r(3)
- ppoll(2)
- tmpfile(3)
- isupper_l(3)
- xdr_free(3)
- res_nquery(3)
- fts_open(3)
- shutdown(2)
- xdr_callmsg(3)
- coshl(3)
- ntp_gettimex(3)
- afs_syscall(2)
- be32toh(3)
- fchmodat(2)
- addseverity(3)
- pause(2)
- strcmp(3)
- mkostemps(3)
- wcsrtombs(3)
- scandir(3)
- __freadable(3)
- killpg(3)
- add_key(2)
- strcoll(3)
- migrate_pages(2)
- pthread_setattr_default_np(3)
- pthread_attr_setsigmask_np(3)
- sigabbrev_np(3)
- readdir(2)
- subpage_prot(2)
- strfromf(3)
- sysv_signal(3)
- gethostbyname2_r(3)
- outl_p(2)
- sync(2)
- pthread_attr_getinheritsched(3)
- socket(2)
- msgrcv(2)
- fgetws(3)
- pthread_cleanup_push_defer_np(3)
- getnetgrent_r(3)
- ynl(3)
- endservent(3)
- srand(3)
- endmntent(3)
- cbrtl(3)
- setitimer(2)
- pmap_rmtcall(3)
- svcerr_systemerr(3)
- fesetround(3)
- ilogbf(3)
- __fwriting(3)
- log1p(3)
- futimens(3)
- xdrrec_endofrecord(3)
- setreuid32(2)
- swab(3)
- pthread_spin_init(3)
- memchr(3)
- fminf(3)
- getipnodebyname(3)
- msgop(2)
- wait(2)
- ether_aton_r(3)
- open_wmemstream(3)
- xdr_bool(3)
- pthread_tryjoin_np(3)
- xdr_int(3)
- inet_net_ntop(3)
- fdimf(3)
- srand48(3)
- xdr_setpos(3)
- asinf(3)
- program_invocation_name(3)
- write(2)
- mkdtemp(3)
- pthread_cleanup_pop(3)
- ptsname_r(3)
- lgammal_r(3)
- pthread_attr_getstackaddr(3)
- authunix_create(3)
- getpmsg(2)
- ceill(3)
- cexp2f(3)
- kcmp(2)
- setup(2)
- err(3)
- sync_file_range2(2)
- getpid(2)
- wcsncat(3)
- envz_get(3)
- futimes(3)
- mincore(2)
- herror(3)
- ether_line(3)
- feholdexcept(3)
- fputc(3)
- keyctl(2)
- timer_delete(2)
- posix_spawn(3)
- faccessat2(2)
- setnetgrent(3)
- pwrite(2)
- aio_read(3)
- shmget(2)
- acosh(3)
- sigdelset(3)
- __ppc_get_timebase(3)
- __flbf(3)
- dladdr1(3)
- argz_create_sep(3)
- mblen(3)
- gethostent(3)
- pciconfig_iobase(2)
- recvmmsg(2)
- isprint_l(3)
- csqrtf(3)
- wcstoimax(3)
- hsearch_r(3)
- svcudp_create(3)
- setreuid(2)
- le16toh(3)
- name_to_handle_at(2)
- strftime_l(3)
- pthread_attr_setschedparam(3)
- eventfd(2)
- atanhf(3)
- pthread_setspecific(3)
- pthread_cond_init(3)
- acosl(3)
- llistxattr(2)
- fputwc_unlocked(3)
- scanf(3)
- getmntent_r(3)
- getchar(3)
- res_ninit(3)
- error_one_per_line(3)
- sigsetmask(3)
- putwchar(3)
- llroundf(3)
- rt_sigpending(2)
- send(2)
- wcsstr(3)
- log2l(3)
- fmod(3)
- va_copy(3)
- res_search(3)
- res_nsend(3)
- res_query(3)
- wait3(2)
- encrypt_r(3)
- system(3)
- close_range(2)
- ecvt_r(3)
- read(2)
- auth_destroy(3)
- realloc(3)
- pipe2(2)
- dn_expand(3)
- timerclear(3)
- get_avphys_pages(3)
- mbsnrtowcs(3)
- strtok(3)
- fwide(3)
- __ppc_get_timebase_freq(3)
- gai_suspend(3)
- stpcpy(3)
- lldiv(3)
- iswxdigit(3)
- posix_openpt(3)
- s390_pci_mmio_write(2)
- pthread_spin_destroy(3)
- callrpc(3)
- getifaddrs(3)
- aio_suspend(3)
- fread_unlocked(3)
- get_nprocs_conf(3)
- getuid(2)
- spu_run(2)
- termios(3)
- umask(2)
- csqrtl(3)
- register_printf_modifier(3)
- sem_trywait(3)
- tee(2)
- msync(2)
- mpool(3)
- setdomainname(2)
- fopencookie(3)
- nl_langinfo(3)
- sockatmark(3)
- getspent_r(3)
- casinhl(3)
- fdiml(3)
- ntohs(3)
- fgets(3)
- time(2)
- casinl(3)
- pthread_detach(3)
- seccomp_unotify(2)
apt-get install manpages-dev
Available languages:
en fr pl ja deManual
CLONE
名 前書 式
説 明
C ラ イ ブ ラ リ と カ ー ネ ル ABI の 違 い
blackfin, m68k, sparc
ia64
Linux 2.4 以 前
返 り 値
エ ラ ー
バ ー ジ ョ ン
準 拠
注 意
バ グ
例
プ ロ グ ラ ム の ソ ー ス
関 連 項 目
こ の 文 書 に つ い て
名 前
clone, __clone2 - 子 プ ロ セ ス を 作 成 す る
書 式
/* glibc ラ ッ パ ー 関 数 の プ ロ ト タ イ プ */
#include <sched.h>
int clone(int
(*
fn
)(void *), void
*
child_stack
,
int
flags
, void *
arg
, ...
/* pid_t *
ptid
, struct user_desc
*
tls
, pid_t *
ctid
*/ );
/* 素 の シ ス テ ム コ ー ル の プ ロ ト タ イ プ */
long
clone(unsigned long
flags
, void
*
child_stack
,
void *
ptid
, void *
ctid
,
struct pt_regs *
regs
);
glibc ラ ッ パ ー 関 数 の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):
clone ():
glibc 2.14 以 降 :
_GNU_SOURCE
glibc 2.14 よ り 前 :
_BSD_SOURCE || _SVID_SOURCE
/* _GNU_SOURCE も 定 義 さ れ
る */
説 明
clone () は 、 fork (2) と 似 た 方 法 で 新 し い プ ロ セ ス を 作 成 す る 。
こ の ペ ー ジ で は 、 glibc の clone () ラ ッ パ ー 関 数 と そ の 裏 で 呼 ば れ る シ ス テ ム コ ー ル の 両 方 に つ い て 説 明 し て い る 。 メ イ ン の 説 明 は ラ ッ パ ー 関 数 に 関 す る も の で あ る 。 素 の シ ス テ ム コ ー ル に お け る 差 分 は こ の ペ ー ジ の 最 後 の 方 で 説 明 す る 。
fork (2) と は 異 な り 、 clone () で は 、 子 プ ロ セ ス (child process) と 呼 び 出 し 元 の プ ロ セ ス と が 、 メ モ リ ー 空 間 、 フ ァ イ ル デ ィ ス ク リ プ タ ー の テ ー ブ ル 、 シ グ ナ ル ハ ン ド ラ ー の テ ー ブ ル な ど の 実 行 コ ン テ キ ス ト の 一 部 を 共 有 で き る 。 (こ の マ ニ ュ ア ル に お け る 「 呼 び 出 し 元 の プ ロ セ ス 」 は 、 通 常 は 「 親 プ ロ セ ス 」 と 一 致 す る 。 但 し 、 後 述 の CLONE_PARENT の 項 も 参 照 の こ と )
clone () の 主 要 な 使 用 法 は ス レ ッ ド (threads) を 実 装 す る こ と で あ る : 一 つ の プ ロ グ ラ ム の 中 の 複 数 の ス レ ッ ド は 共 有 さ れ た メ モ リ ー 空 間 で 同 時 に 実 行 さ れ る 。
clone () で 子 プ ロ セ ス が 作 成 さ れ た 時 に 、 作 成 さ れ た 子 プ ロ セ ス は 関 数 fn ( arg ) を 実 行 す る 。 (こ の 点 が fork (2) と は 異 な る 。 fork (2) の 場 合 、 子 プ ロ セ ス は fork (2) が 呼 び 出 さ れ た 場 所 か ら 実 行 を 続 け る 。 ) fn 引 き 数 は 、 子 プ ロ セ ス が 実 行 を 始 め る 時 に 子 プ ロ セ ス が 呼 び 出 す 関 数 へ の ポ イ ン タ ー で あ る 。 arg 引 き 数 は そ の ま ま fn 関 数 へ と 渡 さ れ る 。
fn ( arg ) 関 数 が 終 了 す る と 、 子 プ ロ セ ス は 終 了 す る 。 fn に よ っ て 返 さ れ た 整 数 が 子 プ ロ セ ス の 終 了 コ ー ド と な る 。 子 プ ロ セ ス は 、 exit (2) を 呼 ん で 明 示 的 に 終 了 す る こ と も あ る し 、 致 命 的 な シ グ ナ ル を 受 信 し た 場 合 に 終 了 す る こ と も あ る 。
child_stack 引 き 数 は 、 子 プ ロ セ ス に よ っ て 使 用 さ れ る ス タ ッ ク の 位 置 を 指 定 す る 。 子 プ ロ セ ス と 呼 び 出 し 元 の プ ロ セ ス は メ モ リ ー を 共 有 す る こ と が あ る た め 、 子 プ ロ セ ス は 呼 び 出 し 元 の プ ロ セ ス と 同 じ ス タ ッ ク で 実 行 す る こ と が で き な い 。 こ の た め 、 呼 び 出 し 元 の プ ロ セ ス は 子 プ ロ セ ス の ス タ ッ ク の た め の メ モ リ ー 空 間 を 用 意 し て 、 こ の 空 間 へ の ポ イ ン タ ー を clone () へ 渡 さ な け れ ば な ら な い 。 (HP PA プ ロ セ ッ サ 以 外 の ) Linux が 動 作 す る 全 て の プ ロ セ ッ サ で は 、 ス タ ッ ク は 下 方 (ア ド レ ス が 小 さ い 方 向 ) へ と 伸 び る 。 こ の た め 、 普 通 は child_stack は 子 プ ロ セ ス の ス タ ッ ク の た め に 用 意 し た メ モ リ ー 空 間 の 一 番 大 き い ア ド レ ス を 指 す よ う に す る 。
flags の 下 位 1 バ イ ト は 子 プ ロ セ ス が 死 ん だ 場 合 に 親 プ ロ セ ス へ と 送 ら れ る 終 了 シ グ ナ ル (termination signal) の 番 号 を 指 定 す る 。 こ の シ グ ナ ル と し て SIGCHLD 以 外 が 指 定 さ れ た 場 合 、 親 プ ロ セ ス は 、 wait (2) で 子 プ ロ セ ス を 待 つ 際 に 、 オ プ シ ョ ン と し て __WALL ま た は __WCLONE を 指 定 し な け れ ば な ら な い 。 ど の シ グ ナ ル も 指 定 さ れ な か っ た 場 合 、 子 プ ロ セ ス が 終 了 し た 時 に 親 プ ロ セ ス に シ グ ナ ル は 送 ら れ な い 。
flags
に は 、 以 下 の
定 数 の う ち 0個
以 上 を ビ ッ ト
毎 の 論 理 和 (bitwise-or)
を と っ た も の
を 指 定 で き る
。 こ れ ら の 定
数 は 呼 び 出 し
元 の プ ロ セ ス
と 子 プ ロ セ ス
の 間 で 何 を 共
有 す る か を 指
定 す る :
CLONE_CHILD_CLEARTID
(Linux 2.5.49 以 降
)
子 プ ロ セ ス が 終 了 し た と き に 子 プ ロ セ ス の メ モ リ ー 内 の ctid が 指 す 場 所 に あ る 子 プ ロ セ ス の ス レ ッ ド ID を 消 去 し 、 そ の ア ド レ ス で futex を wake (起 床 ) さ せ る 。 こ の ア ド レ ス は set_tid_address (2) シ ス テ ム コ ー ル で 変 更 す る こ と が で き る 。 こ の 機 能 は ス レ ッ ド ラ イ ブ ラ リ で 使 用 さ れ る 。
CLONE_CHILD_SETTID (Linux 2.5.49 以 降 )
子 プ ロ セ ス の メ モ リ ー 内 の ctid が 指 す 場 所 に 子 プ ロ セ ス の ス レ ッ ド ID を 格 納 す る 。
CLONE_FILES (Linux 2.0 以 降 )
CLONE_FILES が 設 定 さ れ た 場 合 、 呼 び 出 し 元 の プ ロ セ ス と 子 プ ロ セ ス は フ ァ イ ル デ ィ ス ク リ プ タ ー の テ ー ブ ル を 共 有 す る 。 呼 び 出 し 元 プ ロ セ ス と そ の 子 プ ロ セ ス の 一 方 が 作 成 し た フ ァ イ ル デ ィ ス ク リ プ タ ー は 、 も う 一 方 に お い て も 有 効 で あ る 。 同 じ よ う に 、 一 方 の プ ロ セ ス が フ ァ イ ル デ ィ ス ク リ プ タ ー を 閉 じ た り 、 ( fcntl (2) F_SETFD 操 作 を 使 っ て ) デ ィ ス ク リ プ タ ー に 関 連 す る フ ラ グ を 変 更 し た り す る と 、 も う 一 方 の プ ロ セ ス に も 影 響 す る 。
CLONE_FILES が 設 定 さ れ て い な い 場 合 、 子 プ ロ セ ス は 、 clone () が 実 行 さ れ た 時 点 で 、 呼 び 出 し 元 の プ ロ セ ス が オ ー プ ン し て い る 全 て の フ ァ イ ル デ ィ ス ク リ プ タ ー の コ ピ ー を 継 承 す る (子 プ ロ セ ス の 複 製 さ れ た フ ァ イ ル デ ィ ス ク リ プ タ ー は 、 対 応 す る 呼 び 出 し 元 の プ ロ セ ス の フ ァ イ ル デ ィ ス ク リ プ タ ー と 同 じ フ ァ イ ル 記 述 ( open (2) 参 照 ) を 参 照 す る )。 こ れ 以 降 に 、 呼 び 出 し 元 の プ ロ セ ス と 子 プ ロ セ ス の 一 方 が フ ァ イ ル デ ィ ス ク リ プ タ ー の 操 作 (フ ァ イ ル デ ィ ス ク リ プ タ ー の オ ー プ ン ・ ク ロ ー ズ や 、 フ ァ イ ル デ ィ ス ク リ プ タ ー フ ラ グ の 変 更 ) を 行 っ て も 、 も う 一 方 の プ ロ セ ス に は 影 響 を 与 え な い 。
CLONE_FS (Linux 2.0 以 降 )
CLONE_FS が 設 定 さ れ た 場 合 、 呼 び 出 し 元 の プ ロ セ ス と 子 プ ロ セ ス が 同 じ フ ァ イ ル シ ス テ ム 情 報 を 共 有 す る 。 フ ァ イ ル シ ス テ ム 情 報 は 、 フ ァ イ ル シ ス テ ム の ル ー ト (root)、 カ レ ン ト ワ ー キ ン グ デ ィ レ ク ト リ (current working directory) や umask な ど で あ る 。 呼 び 出 し 元 の プ ロ セ ス や 子 プ ロ セ ス の ど ち ら か 一 方 に よ っ て chroot (2), chdir (2), umask (2) が 呼 び 出 さ れ る と 、 も う 一 方 の プ ロ セ ス に も 影 響 が 及 ぶ 。
CLONE_FS が 設 定 さ れ て い な い 場 合 、 子 プ ロ セ ス は 、 clone () が 実 行 さ れ た 時 点 で の 、 呼 び 出 し 元 の プ ロ セ ス の フ ァ イ ル シ ス テ ム 情 報 の コ ピ ー を 使 用 す る 。 こ れ 以 降 は 、 呼 び 出 し 元 の プ ロ セ ス と 子 プ ロ セ ス の 一 方 が chroot (2), chdir (2), umask (2) を 呼 び 出 し て も 、 も う 一 方 の プ ロ セ ス に は 影 響 を 与 え な い 。
CLONE_IO (Linux 2.6.25 以 降 )
CLONE_IO が 設 定 さ れ た 場 合 、 新 し い プ ロ セ ス は 呼 び 出 し 元 の プ ロ セ ス と I/O コ ン テ キ ス ト を 共 有 す る 。 こ の フ ラ グ が 設 定 さ れ て い な い 場 合 に は 、 ( fork (2) の 場 合 と 同 様 ) 新 し い プ ロ セ ス は 自 分 専 用 の I/O コ ン テ キ ス ト を 持 つ 。
I/O コ ン テ キ ス ト は 、 デ ィ ス ク ス ケ ジ ュ ー ル の I/O ス コ ー プ で あ る (言 い 換 え る と 、 I/O コ ン テ キ ス ト は I/O ス ケ ジ ュ ー ラ が プ ロ セ ス I/O の ス ケ ジ ュ ー リ ン グ を モ デ ル 化 す る の に 使 用 さ れ る )。 複 数 の プ ロ セ ス が 同 じ I/O コ ン テ キ ス ト を 共 有 す る 場 合 、 こ れ ら の プ ロ セ ス は I/O ス ケ ジ ュ ー ラ か ら は 一 つ と し て 扱 わ れ る 。 結 果 と し て 、 こ れ ら の プ ロ セ ス は デ ィ ス ク ア ク セ ス の 時 間 を 共 有 す る よ う に な る 。 い く つ か の I/O ス ケ ジ ュ ー ラ で は 、 二 つ の プ ロ セ ス が I/O コ ン テ キ ス ト を 共 有 し て い る 場 合 、 こ れ ら の プ ロ セ ス は デ ィ ス ク ア ク セ ス を 交 互 に 行 う こ と が で き る 。 同 じ プ ロ セ ス の 複 数 の ス レ ッ ド が I/O を 実 行 し て い る 場 合 (例 え ば aio_read (3))、 CLONE_IO を 利 用 す る こ と で I/O 性 能 を 良 く す る こ と が で き る 。
カ ー ネ ル の 設 定 が CONFIG_BLOCK オ プ シ ョ ン 付 き で な い 場 合 、 こ の フ ラ グ は 何 の 意 味 も 持 た な い 。
CLONE_NEWIPC (Linux 2.6.19 以 降 )
CLONE_NEWIPC が 設 定 さ れ た 場 合 、 新 し い IPC 名 前 空 間 (namespace) で プ ロ セ ス を 作 成 す る 。 こ の フ ラ グ が 設 定 さ れ て い な い 場 合 、 ( fork (2) の 場 合 と 同 様 ) 呼 び 出 し 元 の プ ロ セ ス と 同 じ IPC 名 前 空 間 で プ ロ セ ス が 作 成 さ れ る 。 こ の フ ラ グ は 、 コ ン テ ナ の 実 装 で の 使 用 を 意 図 し て 用 意 さ れ た も の で あ る 。
IPC 名 前 空 間 は 、 独 立 の System V IPC オ ブ ジ ェ ク ト 空 間 ( svipc (7) 参 照 ) を 提 供 す る 。 (Linux 2.6.30 以 降 で は ) 独 立 し た POSIX メ ッ セ ー ジ キ ュ ー 空 間 ( mq_overview (7) 参 照 ) も 提 供 さ れ る 。 こ れ ら の IPC 機 構 に 共 通 の 特 徴 と し て 、 IPC オ ブ ジ ェ ク ト は フ ァ イ ル シ ス テ ム の パ ス 名 と は 違 っ た 仕 組 み で 識 別 さ れ る と い う 点 が あ る 。
あ る IPC 名 前 空 間 に 作 成 さ れ た オ ブ ジ ェ ク ト は 、 そ の 名 前 空 間 の メ ン バ ー で あ る 他 の す べ て の プ ロ セ ス か ら も 見 え る が 、 違 う IPC 名 前 空 間 の プ ロ セ ス か ら は 見 え な い 。
IPC 名 前 空 間 が 破 棄 さ れ る 時 (す な わ ち 、 そ の 名 前 空 間 の メ ン バ ー の 最 後 の プ ロ セ ス が 終 了 す る 時 )、 そ の 名 前 空 間 の 全 て の IPC オ ブ ジ ェ ク ト は 自 動 的 に 破 棄 さ れ る 。
特 権 プ ロ セ ス ( CAP_SYS_ADMIN ) だ け が CLONE_NEWIPC を 使 用 で き る 。 こ の フ ラ グ は CLONE_SYSVSEM と 組 み 合 わ せ て 指 定 す る こ と は で き な い 。
IPC 名 前 空 間 の 詳 細 は namespaces (7) を 参 照 。
CLONE_NEWNET (Linux 2.6.24 以 降 )
(こ の フ ラ グ の 実 装 は 、 Linux 2.6.29 あ た り ま で に は 完 成 し た 。 )
CLONE_NEWNET が 設 定 さ れ た 場 合 、 新 し い ネ ッ ト ワ ー ク 名 前 空 間 (network namaspace) で プ ロ セ ス を 作 成 す る 。 こ の フ ラ グ が 設 定 さ れ て い な い 場 合 、 ( fork (2) の 場 合 と 同 様 ) 呼 び 出 し 元 の プ ロ セ ス と 同 じ ネ ッ ト ワ ー ク 名 前 空 間 で プ ロ セ ス が 作 成 さ れ る 。 こ の フ ラ グ は 、 コ ン テ ナ の 実 装 で の 使 用 を 意 図 し て 用 意 さ れ た も の で あ る 。
ネ ッ ト ワ ー ク 名 前 空 間 は 、 分 離 さ れ た ネ ッ ト ワ ー ク ス タ ッ ク を 提 供 す る も の で あ る (ネ ッ ト ワ ー ク ス タ ッ ク と は 、 ネ ッ ト ワ ー ク デ バ イ ス イ ン タ ー フ ェ ー ス 、 IPv4 や IPv6 プ ロ ト コ ル ス タ ッ ク 、 /proc/net 、 /sys/class/net デ ィ レ ク ト リ ツ リ ー 、 ソ ケ ッ ト な ど で あ る )。 物 理 ネ ッ ト ワ ー ク デ バ イ ス が 所 属 で き る ネ ッ ト ワ ー ク 名 前 空 間 は 一 つ だ け で あ る 。 仮 想 ネ ッ ト ワ ー ク デ バ イ ス ("veth") の ペ ア に よ り パ イ プ 風 の 抽 象 化 (abstraction) が 実 現 さ れ て お り 、 こ れ を 使 う こ と で 、 ネ ッ ト ワ ー ク 名 前 空 間 間 の ト ン ネ ル を 作 成 し た り 、 別 の 名 前 空 間 の 物 理 ネ ッ ト ワ ー ク デ バ イ ス へ の ブ リ ッ ジ を 作 成 し た り す る こ と が で き る 。
ネ ッ ト ワ ー ク 名 前 空 間 が 解 放 さ れ る 時 (す な わ ち 、 そ の 名 前 空 間 の 最 後 の プ ロ セ ス が 終 了 す る 時 )、 物 理 ネ ッ ト ワ ー ク デ バ イ ス は 初 期 ネ ッ ト ワ ー ク 名 前 空 間 (initial network namespace) に 戻 さ れ る (親 プ ロ セ ス の ネ ッ ト ワ ー ク 名 前 空 間 に 戻 さ れ る 訳 で は な い )。 ネ ッ ト ワ ー ク 名 前 空 間 の さ ら な る 情 報 は namespaces (7) を 参 照 。
特 権 プ ロ セ ス ( CAP_SYS_ADMIN ) だ け が CLONE_NEWNET を 使 用 で き る 。
CLONE_NEWNS (Linux 2.4.19 以 降 )
CLONE_NEWNS が セ ッ ト さ れ て い る 場 合 、 clone で 作 成 さ れ た 子 プ ロ セ ス は 新 し い マ ウ ン ト 名 前 空 間 で 開 始 さ れ 、 新 し い 名 前 空 間 は 親 プ ロ セ ス の 名 前 空 間 の コ ピ ー で 初 期 化 さ れ る 。 CLONE_NEWNS が セ ッ ト さ れ て い な い 場 合 、 子 プ ロ セ ス は 親 プ ロ セ ス と 同 じ マ ウ ン ト 名 前 空 間 と な る 。
マ ウ ン ト 名 前 空 間 の 詳 細 は namespaces (7) を 参 照 。
特 権 プ ロ セ ス ( CAP_SYS_ADMIN ) の み が CLONE_NEWNS を 指 定 す る こ と が で き る 。 一 つ の clone () 呼 び 出 し で 、 CLONE_NEWNS と CLONE_FS の 両 方 を 指 定 す る こ と は で き な い 。
CLONE_NEWPID (Linux 2.6.24 以 降 )
CLONE_NEWPID が 設 定 さ れ た 場 合 、 新 し い PID 名 前 空 間 で プ ロ セ ス を 作 成 す る 。 こ の フ ラ グ が 設 定 さ れ て い な い 場 合 、 ( fork (2) の 場 合 と 同 様 ) 呼 び 出 し 元 の プ ロ セ ス と 同 じ PID 名 前 空 間 で プ ロ セ ス が 作 成 さ れ る 。 こ の フ ラ グ は 、 コ ン テ ナ の 実 装 で の 使 用 を 意 図 し て 用 意 さ れ た も の で あ る 。
PID 名 前 空 間 の 詳 細 は namespaces (7) と pid_namespaces (7) を 参 照 。
特 権 プ ロ セ ス ( CAP_SYS_ADMIN ) だ け が CLONE_NEWPID を 使 用 で き る 。 こ の フ ラ グ は CLONE_THREAD や CLONE_PARENT と 組 み 合 わ せ て 指 定 す る こ と は で き な い 。
CLONE_NEWUSER
(こ の フ ラ グ が clone () で 意 味 を 持 つ よ う に な っ た の は Linux 2.6.23 で あ る 。 現 在 の clone () の 動 作 が 取 り 込 ま れ た の は Linux 3.5 で あ り 、 ユ ー ザ ー 名 前 空 間 が 完 全 に 機 能 す る よ う に す る 最 後 の 機 能 が 取 り 込 ま れ た の は Linux 3.8 で あ る 。 )
CLONE_NEWUSER が セ ッ ト さ れ て い る 場 合 、 新 し い ユ ー ザ ー 名 前 空 間 で プ ロ セ ス を 作 成 す る 。 こ の フ ラ グ が セ ッ ト さ れ て い な い 場 合 、 ( fork (2) の 場 合 と 同 様 に ) 呼 び 出 し 元 の プ ロ セ ス と 同 じ ユ ー ザ ー 名 前 空 間 で プ ロ セ ス が 作 成 さ れ る 。
ユ ー ザ ー 名 前 空 間 の 詳 細 は namespaces (7) と user_namespaces (7) を 参 照 。
Linux 3.8 よ り 前 で は 、 CLONE_NEWUSER を 使 用 す る に は 、 呼 び 出 し 元 は CAP_SYS_ADMIN , CAP_SETUID , CAP_SETGID の 3 つ の ケ ー パ リ ビ テ ィ を 持 っ て い る 必 要 が あ っ た 。 Linux 3.8 以 降 で は 、 ユ ー ザ ー 名 前 空 間 を 作 成 す る の に 特 権 は 必 要 な く な っ た 。
こ の フ ラ グ は CLONE_THREAD や CLONE_PARENT と 組 み 合 わ せ て 指 定 す る こ と は で き な い 。 セ キ ュ リ テ ィ 上 の 理 由 か ら 、 CLONE_NEWUSER は CLONE_FS と 組 み 合 わ せ て 指 定 す る こ と は で き な い 。
ユ ー ザ ー 名 前 空 間 の 詳 細 は user_namespaces (7) を 参 照 。
CLONE_NEWUTS (Linux 2.6.19 以 降 )
CLONE_NEWUTS が 設 定 さ れ た 場 合 、 新 し い UTS 名 前 空 間 で プ ロ セ ス を 作 成 す る 。 新 し い UTS 名 前 空 間 の 識 別 子 の 初 期 値 は 、 呼 び 出 し 元 の プ ロ セ ス の UTS 名 前 空 間 の 識 別 子 を 複 製 し た も の と な る 。 こ の フ ラ グ が 設 定 さ れ て い な い 場 合 、 ( fork (2) の 場 合 と 同 様 ) 呼 び 出 し 元 の プ ロ セ ス と 同 じ UTS 名 前 空 間 で プ ロ セ ス が 作 成 さ れ る 。 こ の フ ラ グ は 、 コ ン テ ナ の 実 装 で の 使 用 を 意 図 し て 用 意 さ れ た も の で あ る 。
UTS 名 前 空 間 は 、 uname (2) が 返 す 識 別 子 の 集 合 で あ る 。 識 別 子 と し て は ド メ イ ン 名 と ホ ス ト 名 が あ り 、 そ れ ぞ れ setdomainname (2), sethostname (2) で 修 正 す る こ と が で き る 。 あ る UTS 名 前 空 間 に お け る 識 別 子 の 変 更 は 同 じ 名 前 空 間 の 他 の す べ て の プ ロ セ ス に 見 え る が 、 別 の UTS 名 前 空 間 の プ ロ セ ス に は 見 え な い 。
特 権 プ ロ セ ス ( CAP_SYS_ADMIN ) だ け が CLONE_NEWUTS を 使 用 で き る 。
UTS 名 前 空 間 の 詳 細 は namespaces (7) を 参 照 。
CLONE_PARENT (Linux 2.3.12 以 降 )
CLONE_PARENT が 設 定 さ れ た 場 合 、 新 し い 子 供 の ( getppid (2) で 返 さ れ る ) 親 プ ロ セ ス は 呼 び 出 し 元 の プ ロ セ ス の 親 プ ロ セ ス と 同 じ に な る 。
CLONE_PARENT が 設 定 さ れ て い な い 場 合 、 ( fork (2) と 同 様 に ) 呼 び 出 し 元 の プ ロ セ ス が そ の 子 供 の 親 に な る 。
子 供 が 終 了 し た 時 に シ グ ナ ル が 送 ら れ る の は getppid (2) が 返 す 親 プ ロ セ ス で あ る 点 に 注 意 す る こ と 。 こ の た め CLONE_PARENT が 設 定 さ れ た 場 合 、 呼 び 出 し 元 の プ ロ セ ス で は な く 呼 び 出 し 元 の プ ロ セ ス の 親 プ ロ セ ス に シ グ ナ ル が 送 ら れ る 。
CLONE_PARENT_SETTID (Linux 2.5.49 以 降 )
親 プ ロ セ ス と 子 プ ロ セ ス の メ モ リ ー 内 の ptid が 指 す 領 域 に 子 プ ロ セ ス の ス レ ッ ド ID を 格 納 す る 。 (Linux 2.5.32-2.5.48 で は 、 同 じ こ と を す る CLONE_SETTID と い う フ ラ グ が 存 在 し た 。 )
CLONE_PID (廃 止 予 定 )
CLONE_PID が 設 定 さ れ た 場 合 、 子 プ ロ セ ス は 呼 び 出 し 元 の プ ロ セ ス と 同 じ プ ロ セ ス ID で 作 成 さ れ る 。 こ れ は シ ス テ ム を ハ ッ キ ン グ す る の に は 便 利 だ が 、 そ れ 以 外 に は あ ま り 使 わ れ な い 。 Linux 2.3.21 以 降 で は 、 シ ス テ ム の ブ ー ト プ ロ セ ス (PID 0) だ け が こ の フ ラ グ を 指 定 で き る 。 Linux 2.5.16 で 削 除 さ れ た 。
CLONE_PTRACE (Linux 2.2 以 降 )
CLONE_PTRACE が 指 定 さ れ 、 か つ 呼 び 出 し 元 の プ ロ セ ス が 追 跡 (trace) さ れ て い た 場 合 、 子 プ ロ セ ス も 同 様 に 追 跡 さ れ る 。 ( ptrace (2) を 参 照 の こ と )
CLONE_SETTLS (Linux 2.5.32 以 降 )
newtls 引 き 数 は 、 新 し い TLS (Thread Local Storage) デ ィ ス ク リ プ タ ー で あ る 。 ( set_thread_area (2) を 参 照 の こ と )
CLONE_SIGHAND (Linux 2.0 以 降 )
CLONE_SIGHAND が 設 定 さ れ た 場 合 、 呼 び 出 し 元 の プ ロ セ ス と 子 プ ロ セ ス は 同 じ シ グ ナ ル ハ ン ド ラ の テ ー ブ ル を 共 有 す る 。 呼 び 出 し 元 の プ ロ セ ス ま た は 子 プ ロ セ ス の ど ち ら か が sigaction (2) を 呼 び 出 し て シ グ ナ ル に 対 応 す る 動 作 を 変 更 し た 場 合 、 も う 一 方 の プ ロ セ ス の シ グ ナ ル 動 作 も 変 更 さ れ る 。 但 し 、 呼 び 出 し 元 の プ ロ セ ス と 子 プ ロ セ ス は 、 プ ロ セ ス 毎 に 、 シ グ ナ ル マ ス ク (signal mask) と 処 理 待 ち シ グ ナ ル の 集 合 を 持 っ て い る 。 こ の た め 、 あ る プ ロ セ ス は 、 sigprocmask (2) を 使 用 し て 、 も う 一 方 の プ ロ セ ス に 影 響 を 与 え ず に シ グ ナ ル を 禁 止 (block) し た り 許 可 (unblock) し た り で き る 。
CLONE_SIGHAND が 設 定 さ れ て い な い 場 合 、 子 プ ロ セ ス は clone () が 実 行 さ れ た 時 点 で の 、 呼 び 出 し 元 の プ ロ セ ス の シ グ ナ ル ハ ン ド ラ ー の コ ピ ー を 継 承 す る 。 こ れ 以 降 は 、 一 方 の プ ロ セ ス が sigaction (2) を 呼 び 出 し て も 、 も う 一 方 の プ ロ セ ス に は 影 響 を 与 え な い 。
Linux 2.6.0-test6 以 降 で は 、 CLONE_SIGHAND を 指 定 す る 場 合 、 CLONE_VM も flags に 含 め な け れ ば な ら な い 。
CLONE_STOPPED (Linux 2.6.0-test2 以 降 )
CLONE_STOPPED が 設 定 さ れ る と 、 子 プ ロ セ ス は 最 初 ( SIGSTOP シ グ ナ ル を 送 ら れ た か の よ う に ) 停 止 し た 状 態 と な る 。 子 プ ロ セ ス を 再 開 さ せ る に は SIGCONT シ グ ナ ル を 送 信 し な け れ ば な ら な い 。
こ の フ ラ グ は Linux 2.6.25 以 降 で は 非 推 奨 で あ り 、 Linux 2.6.38 で 完 全 に 削 除 さ れ た 。
CLONE_SYSVSEM (Linux 2.5.10 以 降 )
CLONE_SYSVSEM が セ ッ ト さ れ る と 、 子 プ ロ セ ス と 呼 び 出 し 元 プ ロ セ ス は 一 つ の System V セ マ フ ォ の 調 整 値 ( semadj ) ( semop (2) 参 照 ) を 共 有 す る 。 こ の 場 合 、 共 有 さ れ た リ ス ト は こ の リ ス ト を 共 有 す る 全 プ ロ セ ス の semadj 値 を 積 算 し 、 セ マ フ ォ 調 整 は こ の リ ス ト を 共 有 し て い る 最 後 の プ ロ セ ス が 終 了 し た 際 (ま た は unshare (2) を 使 っ て リ ス ト の 共 有 が 中 止 さ れ た 際 ) に 実 行 さ れ る 。 こ の フ ラ グ が セ ッ ト さ れ て い な け れ ば 、 子 プ ロ セ ス は 独 自 の セ マ フ ォ semadj リ ス ト を 持 つ (リ ス ト の 初 期 値 は 空 で あ る )。
CLONE_THREAD (Linux 2.4.0-test8以 降 )
CLONE_THREAD が 設 定 さ れ た 場 合 、 子 プ ロ セ ス は 呼 び 出 し 元 の プ ロ セ ス と 同 じ ス レ ッ ド グ ル ー プ に 置 か れ る 。 CLONE_THREAD に つ い て の 以 降 の 議 論 を 読 み や す く す る た め 、 「 ス レ ッ ド 」 と い う 用 語 は ス レ ッ ド グ ル ー プ の 中 の プ ロ セ ス を 参 照 す る の に 使 う こ と と す る 。
ス レ ッ ド グ ル ー プ は 、 ス レ ッ ド 集 合 で 一 つ の PID を 共 有 す る と い う POSIX ス レ ッ ド の 概 念 を サ ポ ー ト す る た め に Linux 2.4 に 加 え ら れ た 機 能 で あ っ た 。 内 部 的 に は 、 こ の 共 有 PID は い わ ゆ る そ の ス レ ッ ド グ ル ー プ の ス レ ッ ド グ ル ー プ 識 別 子 (TGID) で あ る 。 Linux 2.4 以 降 で は 、 getpid (2) の 呼 び 出 し で は そ の プ ロ セ ス の ス レ ッ ド グ ル ー プ ID を 返 す 。
あ る グ ル ー プ に 属 す る ス レ ッ ド は (シ ス テ ム 全 体 で ) 一 意 な ス レ ッ ド ID (TID) で 区 別 で き る 。 新 し い ス レ ッ ド の TID は clone () の 呼 び 出 し 元 へ 関 数 の 結 果 と し て 返 さ れ 、 ス レ ッ ド は 自 分 自 身 の TID を gettid (2) で 取 得 で き る 。
CLONE_THREAD を 指 定 せ ず に clone () の 呼 び 出 し が 行 わ れ る と 、 生 成 さ れ た ス レ ッ ド は そ の ス レ ッ ド の TID と 同 じ 値 の TGID を 持 つ 新 し い ス レ ッ ド グ ル ー プ に 置 か れ る 。 こ の ス レ ッ ド は 新 し い ス レ ッ ド グ ル ー プ の 「 リ ー ダ ー 」 で あ る 。
CLONE_THREAD を 指 定 し て 作 成 さ れ た 新 し い ス レ ッ ド は 、 ( CLONE_PARENT の 場 合 と 同 様 に ) clone () を 呼 び 出 し 元 と 同 じ 親 プ ロ セ ス を 持 つ 。 そ の た め 、 getppid (2) を 呼 ぶ と 、 一 つ の ス レ ッ ド グ ル ー プ に 属 す ス レ ッ ド は 全 て 同 じ 値 を 返 す 。 CLONE_THREAD で 作 ら れ た ス レ ッ ド が 終 了 し た 際 に 、 そ の ス レ ッ ド を clone () を 使 っ て 生 成 し た ス レ ッ ド に は SIGCHLD (も し く は 他 の 終 了 シ グ ナ ル ) は 送 信 さ れ な い 。 ま た 、 wait (2) を 使 っ て 終 了 し た ス レ ッ ド の 状 態 を 取 得 す る こ と も で き な い (そ の よ う な ス レ ッ ド は detached (分 離 さ れ た ) と い わ れ る )。
ス レ ッ ド グ ル ー プ に 属 す 全 て の ス レ ッ ド が 終 了 し た 後 、 そ の ス レ ッ ド グ ル ー プ の 親 プ ロ セ ス に SIGCHLD (も し く は 他 の 終 了 シ グ ナ ル ) が 送 ら れ る 。
ス レ ッ ド グ ル ー プ に 属 す い ず れ か の ス レ ッ ド が execve (2) を 実 行 す る と 、 ス レ ッ ド グ ル ー プ リ ー ダ ー 以 外 の 全 て の ス レ ッ ド は 終 了 さ れ 、 新 し い プ ロ セ ス が そ の ス レ ッ ド グ ル ー プ リ ー ダ ー の 下 で 実 行 さ れ る 。
ス レ ッ ド グ ル ー プ に 属 す ス レ ッ ド の 一 つ が fork (2) を 使 っ て 子 プ ロ セ ス を 作 成 し た 場 合 、 ス レ ッ ド グ ル ー プ の ど の ス レ ッ ド で あ っ て も そ の 子 供 を wait (2) で き る 。
Linux 2.5.35 以 降 で は 、 CLONE_THREAD を 指 定 す る 場 合 、 flags に CLONE_SIGHAND も 含 ま れ て い な け れ ば な ら な い (Linux 2.6.0-test6 以 降 で は 、 CLONE_SIGHAND を 指 定 す る 場 合 CLONE_VM も 指 定 す る 必 要 が あ る 点 に 注 意 す る こ と )。
kill (2) を 使 っ て ス レ ッ ド グ ル ー プ 全 体 (つ ま り TGID) に シ グ ナ ル を 送 る こ と も で き れ ば 、 tgkill (2) を 使 っ て 特 定 の ス レ ッ ド (つ ま り TID) に シ グ ナ ル を 送 る こ と も で き る 。
シ グ ナ ル の 配 送 と 処 理 は プ ロ セ ス 全 体 に 影 響 す る : ハ ン ド ラ ー を 設 定 し て い な い シ グ ナ ル が あ る ス レ ッ ド に 配 送 さ れ る と 、 そ の シ グ ナ ル は ス レ ッ ド グ ル ー プ の 全 メ ン バ ー に 影 響 を 及 ぼ す (終 了 し た り 、 停 止 し た り 、 動 作 を 継 続 し た り 、 無 視 さ れ た り す る )。
各 々 の ス レ ッ ド は 独 自 の シ グ ナ ル マ ス ク を 持 っ て お り 、 sigprocmask (2) で 設 定 で き る 。 だ が 、 処 理 待 ち の シ グ ナ ル に は 、 kill (2) で 送 信 さ れ る プ ロ セ ス 全 体 に 対 す る も の (つ ま り 、 ス レ ッ ド グ ル ー プ の ど の メ ン バ ー に も 配 送 で き る も の ) と 、 tgkill (2) で 送 信 さ れ る 個 々 の ス レ ッ ド に 対 す る も の が あ り え る 。 sigpending (2) を 呼 び 出 す と 、 プ ロ セ ス 全 体 に 対 す る 処 理 待 ち シ グ ナ ル と 呼 び 出 し 元 の ス レ ッ ド に 対 す る 処 理 待 ち シ グ ナ ル を 結 合 し た シ グ ナ ル 集 合 が 返 さ れ る 。
kill (2) を 使 っ て ス レ ッ ド グ ル ー プ に シ グ ナ ル が 送 ら れ た 場 合 で 、 そ の ス レ ッ ド グ ル ー プ が そ の シ グ ナ ル に 対 す る シ グ ナ ル ハ ン ド ラ ー が 登 録 さ れ て い た と き に は 、 シ グ ナ ル ハ ン ド ラ ー は ス レ ッ ド グ ル ー プ の メ ン バ ー の う ち 、 た だ 一 つ の ス レ ッ ド で だ け 起 動 さ れ る 。 ハ ン ド ラ ー が 起 動 さ れ る ス レ ッ ド は 、 そ の シ グ ナ ル を 禁 止 (block) し て い な い メ ン バ ー の 中 か ら 一 つ だ け が 勝 手 に (arbitrarily) 選 ば れ る 。 ス レ ッ ド グ ル ー プ に 属 す 複 数 の ス レ ッ ド が sigwaitinfo (2) を 使 っ て 同 じ シ グ ナ ル を 待 っ て い る 場 合 、 こ れ ら の ス レ ッ ド の 中 か ら 一 つ を カ ー ネ ル が 勝 手 に 選 択 し 、 そ の ス レ ッ ド が kill (2) を 使 っ て 送 信 さ れ た シ グ ナ ル を 受 信 す る 。
CLONE_UNTRACED (Linux 2.5.46 以 降 )
CLONE_UNTRACED が 指 定 さ れ る と 、 trace を 行 っ て い る プ ロ セ ス は こ の 子 プ ロ セ ス に CLONE_PTRACE を 適 用 す る こ と が で き な い 。
CLONE_VFORK (Linux 2.2 以 降 )
CLONE_VFORK が 設 定 さ れ た 場 合 、 ( vfork (2) と 同 様 に ) 子 プ ロ セ ス が execve (2) ま た は _exit (2) に よ っ て 仮 想 メ モ リ ー を 解 放 す る ま で 、 呼 び 出 し 元 の プ ロ セ ス の 実 行 は 停 止 さ れ る 。
CLONE_VFORK が 設 定 さ れ て い な い 場 合 、 clone () 呼 び 出 し 後 は 、 呼 び 出 し 元 の プ ロ セ ス と 子 プ ロ セ ス の 両 方 が ス ケ ジ ュ ー ル 対 象 と な り 、 ア プ リ ケ ー シ ョ ン は こ れ ら の プ ロ セ ス の 実 行 順 序 に 依 存 し な い よ う に す べ き で あ る 。
CLONE_VM (Linux 2.0 以 降 )
CLONE_VM が 設 定 さ れ た 場 合 、 呼 び 出 し 元 の プ ロ セ ス と 子 プ ロ セ ス は 同 じ メ モ リ ー 空 間 で 実 行 さ れ る 。 特 に 、 呼 び 出 し 元 の プ ロ セ ス や 子 プ ロ セ ス の 一 方 が メ モ リ ー に 書 き 込 ん だ 内 容 は も う 一 方 の プ ロ セ ス か ら も 見 る こ と が で き る 。 さ ら に 、 子 プ ロ セ ス や 呼 び 出 し 元 の プ ロ セ ス の 一 方 が mmap (2) や munmap (2) を 使 っ て メ モ リ ー を マ ッ プ し た り ア ン マ ッ プ し た 場 合 、 も う 一 方 の プ ロ セ ス に も 影 響 が 及 ぶ 。
CLONE_VM が 設 定 さ れ て い な い 場 合 、 子 プ ロ セ ス は clone () が 実 行 さ れ た 時 点 で の 、 親 プ ロ セ ス の メ モ リ ー 空 間 を コ ピ ー し た 別 の メ モ リ ー 空 間 で 実 行 さ れ る 。 一 方 の プ ロ セ ス が 行 っ た メ モ リ ー へ の 書 き 込 み や フ ァ イ ル の マ ッ プ /ア ン マ ッ プ は 、 fork (2) の 場 合 と 同 様 、 も う 一 方 の プ ロ セ ス に は 影 響 し な い 。
C ラ イ ブ ラ リ と カ ー ネ ル ABI の 違 い
素 の clone シ ス テ ム コ ー ル は 、 よ り fork (2) に 近 い か た ち に な っ て お り 、 子 プ ロ セ ス の 実 行 が 呼 び 出 し が 行 わ れ た 場 所 か ら 続 け ら れ る 。 そ の た め 、 clone () ラ ッ パ ー 関 数 の 引 き 数 fn と arg は 省 略 さ れ る 。 ま た 、 引 き 数 の 順 序 も 違 っ て い る 。 x86 と 他 の 多 く の ア ー キ テ ク チ ャ ー に お け る 、 素 の シ ス テ ム コ ー ル の イ ン タ ー フ ェ ー ス は 、 お お ま か に は 次 の よ う に な っ て い る 。
long
clone(unsigned long
flags
, void
*
child_stack
,
void *
ptid
, void *
ctid
,
struct pt_regs *
regs
);
生 の シ ス テ ム コ ー ル の も う 一 つ の 違 い は 、 child_stack 引 き 数 が ゼ ロ で も 良 い こ と で あ る 。 こ の 場 合 に は 、 ど ち ら か の プ ロ セ ス が ス タ ッ ク を 変 更 し た 時 に 、 書 き 込 み 時 コ ピ ー (copy-on-write) 方 式 に よ り 子 プ ロ セ ス が ス タ ッ ク ペ ー ジ の 独 立 し た コ ピ ー を 得 ら れ る こ と が 保 証 さ れ る 。 こ の 場 合 、 正 常 に 動 作 さ せ る た め に は 、 CLONE_VM オ プ シ ョ ン を 指 定 し て は な ら な い 。
い く つ か の ア ー キ テ ク チ ャ ー で は 、 シ ス テ ム コ ー ル の 引 き 数 の 順 序 は 上 記 と は 異 な っ て い る 。 microblaze, ARM, ARM 64, PA-RISC, arc, Power PC, xtensa, MIPS ア ー キ テ ク チ ャ ー で は 、 4 番 目 と 5 番 目 の 引 き 数 の 順 番 が 逆 で あ る 。 cris と s390 ア ー キ テ ク チ ャ ー で は 、 最 初 と 2 番 目 の 引 き 数 の 順 番 が 逆 で あ る 。
blackfin, m68k, sparc
blackfin, m68k, sparc で は 引 き 数 渡 し の 規 約 が 上 記 の 説 明 と は 異 な る 。 詳 細 は 、 カ ー ネ ル (と glibc) の ソ ー ス を 参 照 の こ と 。
ia64
ia64 で は 、 別 の イ ン タ ー フ ェ ー ス が 使 用 さ れ る :
int
__clone2(int (*
fn
)(void *),
void *
child_stack_base
, size_t
stack_size
,
int
flags
, void *
arg
, ...
/* pid_t *
ptid
, struct user_desc
*
tls
, pid_t *
ctid
*/ );
上 記 の プ ロ ト タ イ プ は glibc ラ ッ パ ー 関 数 用 の も の で あ る 。 素 の シ ス テ ム コ ー ル の イ ン タ ー フ ェ ー ス に は 引 き 数 fn と arg が な い 。 ま た 、 引 き 数 の 順 序 が 変 わ り 、 flags が 最 初 の 引 き 数 で 、 tls が 最 後 の 引 き 数 で あ る 。
__clone2 () は clone () と 同 じ よ う に 動 作 す る が 、 以 下 の 点 が 異 な る : child_stack_base は 子 プ ロ セ ス の ス タ ッ ク エ リ ア の 最 小 の ア ド レ ス を 指 し 、 stack_size は child_stack_base が 指 し 示 す ス タ ッ ク エ リ ア の 大 き さ を 示 す 。
Linux 2.4 以 前
Linux 2.4 以 前 で は 、 clone () は 引 き 数 ptid , tls , ctid を 取 ら な い 。
返 り 値
成 功 し た 場 合 、 呼 び 出 し 元 の 実 行 ス レ ッ ド に は 子 プ ロ セ ス の ス レ ッ ド ID が 返 さ れ る 。 失 敗 し た 場 合 、 呼 び 出 し 元 の コ ン テ キ ス ト に は -1 が 返 さ れ 、 子 プ ロ セ ス は 作 成 さ れ ず 、 errno が 適 切 に 設 定 さ れ る 。
エ ラ ー
|
EAGAIN |
す で に 実 行 中 の プ ロ セ ス が 多 す ぎ る 。 fork (2) 参 照 。 |
||
|
EINVAL |
CLONE_SIGHAND が 指 定 さ れ て い た が 、 CLONE_VM が 指 定 さ れ て い な か っ た 。 (Linux 2.6.0-test6 以 降 ) |
||
|
EINVAL |
CLONE_THREAD が 指 定 さ れ て い た が 、 CLONE_SIGHAND が 指 定 さ れ て い な か っ た 。 (Linux 2.5.35 以 降 ) |
||
|
EINVAL |
CLONE_FS と CLONE_NEWNS の 両 方 が flags に 指 定 さ れ た 。 |
EINVAL (Linux 3.9 以 降 )
CLONE_NEWUSER と CLONE_FS の 両 方 が flags に 指 定 さ れ た 。
|
EINVAL |
CLONE_NEWIPC と CLONE_SYSVSEM の 両 方 が flags に 指 定 さ れ た 。 |
||
|
EINVAL |
CLONE_NEWPID と CLONE_NEWUSER の 一 方 (も し く は 両 方 ) と 、 CLONE_THREAD と CLONE_PARENT の 一 方 (も し く は 両 方 ) が 、 flags に 指 定 さ れ た 。 |
||
|
EINVAL |
child_stack に ゼ ロ を 指 定 し た 場 合 に clone () が 返 す 。 |
||
|
EINVAL |
flags に CLONE_NEWIPC が 指 定 さ れ た が 、 カ ー ネ ル で オ プ シ ョ ン CONFIG_SYSVIPC と CONFIG_IPC_NS が 有 効 に な っ て い な か っ た 。 |
||
|
EINVAL |
flags に CLONE_NEWNET が 指 定 さ れ た が 、 カ ー ネ ル で オ プ シ ョ ン CONFIG_NET_NS が 有 効 に な っ て い な か っ た 。 |
||
|
EINVAL |
flags に CLONE_NEWPID が 指 定 さ れ た が 、 カ ー ネ ル で オ プ シ ョ ン CONFIG_PID_NS が 有 効 に な っ て い な か っ た 。 |
||
|
EINVAL |
flags に CLONE_NEWUTS が 指 定 さ れ た が 、 カ ー ネ ル で オ プ シ ョ ン CONFIG_UTS が 有 効 に な っ て い な か っ た 。 |
||
|
ENOMEM |
子 プ ロ セ ス の た め に 確 保 す べ き タ ス ク 構 造 体 や 、 呼 び 出 し 元 の コ ン テ キ ス ト の 一 部 を コ ピ ー す る の に 必 要 な メ モ リ ー を 十 分 に 割 り 当 て る こ と が で き な い 。 |
||
|
EPERM |
非 特 権 プ ロ セ ス ( CAP_SYS_ADMIN を 持 た な い プ ロ セ ス ) が CLONE_NEWIPC , CLONE_NEWNET , CLONE_NEWNS , CLONE_NEWPID , CLONE_NEWUTS を 指 定 し た 。 |
||
|
EPERM |
PID が 0 以 外 の プ ロ セ ス に よ っ て CLONE_PID が 指 定 さ れ た 。 |
||
|
EPERM |
CLONE_NEWUSER が flags に 指 定 さ れ た が 、 呼 び 出 し 元 の 実 効 ユ ー ザ ー ID も し く は 実 効 グ ル ー プ ID が 親 名 前 空 間 に マ ッ ピ ン グ が な い ( user_namespaces (7) 参 照 )。 |
EPERM (Linux 3.9 以 降 )
CLONE_NEWUSER が flags に 指 定 さ れ 、 呼 び 出 し 元 が chroot さ れ た 環 境 に い る (す な わ ち 、 呼 び 出 し 元 の root デ ィ レ ク ト リ が 呼 び 出 し 元 が 属 す る マ ウ ン ト 名 前 空 間 の root デ ィ レ ク ト リ に 一 致 し な い )。
EUSERS (Linux 3.11 以 降 )
CLONE_NEWUSER が flags に 指 定 さ れ て お り 、 こ の 呼 び 出 し に よ り ネ ス ト さ れ た ユ ー ザ ー 名 前 空 間 数 の 上 限 を 超 え て し ま う 。 user_namespaces (7) を 参 照 。
バ ー ジ ョ ン
libc5 に は clone () は な い 。 glibc2 で は clone () が 提 供 さ れ て お り 、 こ の マ ニ ュ ア ル ペ ー ジ に 記 載 の 通 り で あ る 。
準 拠
clone () は Linux 特 有 で あ り 、 移 植 を 考 慮 し た プ ロ グ ラ ム で は 使 用 す べ き で は な い 。
注 意
カ ー ネ ル 2.4.x 系 列 で は 、 一 般 的 に は CLONE_THREAD フ ラ グ を 指 定 し て も 新 し い ス レ ッ ド の 親 を 呼 び 出 し 元 プ ロ セ ス の 親 と 同 じ に は し な い 。 し か し 、 バ ー ジ ョ ン 2.4.7〜 2.4.18 の カ ー ネ ル で は 、 (カ ー ネ ル 2.6 と 同 じ よ う に ) CLONE_THREAD フ ラ グ を 指 定 す る と 、 暗 黙 の う ち に CLONE_PARENT フ ラ グ を 指 定 し た こ と に な る 。
CLONE_DETACHED と い う フ ラ グ が 、 2.5.32 で 導 入 さ れ て 以 来 し ば ら く の 間 存 在 し た 。 こ の フ ラ グ は 親 プ ロ セ ス が 子 プ ロ セ ス 終 了 の シ グ ナ ル を 必 要 と し な い こ と を 表 す も の で あ る 。 2.6.2 で 、 CLONE_DETATCHED を CLONE_THREAD と 一 緒 に 指 定 す る 必 要 は な く な っ た 。 こ の フ ラ グ は ま だ 定 義 さ れ て い る が 、 何 の 効 果 も な い 。
i386 上 で は 、 clone () は vsyscall 経 由 で は な く 、 直 接 int $0x80 経 由 で 呼 び 出 す べ き で あ る 。
バ グ
NPTL ス レ ッ ド ラ イ ブ ラ リ を 含 ん で い る GNU C ラ イ ブ ラ リ の い く つ か の バ ー ジ ョ ン に は 、 getpid (2) の ラ ッ パ ー 関 数 が 含 ま れ て お り 、 こ の ラ ッ パ ー 関 数 は PID を キ ャ ッ シ ュ す る 。 こ の キ ャ ッ シ ュ 処 理 が 正 し く 動 作 す る た め に は glibc の clone () の ラ ッ パ ー 関 数 で の 助 け が 必 要 だ が 、 現 状 の 実 装 で は 、 あ る 状 況 下 に お い て キ ャ ッ シ ュ が 最 新 と な ら な い 可 能 性 が あ る 。 特 に 、 clone () の 呼 び 出 し 直 後 に シ グ ナ ル が 子 プ ロ セ ス に 配 送 さ れ た 場 合 に 、 そ の シ グ ナ ル に 対 す る ハ ン ド ラ ー 内 で getpid (2) を 呼 び 出 す と 、 そ れ ま で に clone の ラ ッ パ ー 関 数 が 子 プ ロ セ ス の PID キ ャ ッ シ ュ を 更 新 す る 機 会 が 得 ら れ て い な け れ ば 、 呼 び 出 し 元 プ ロ セ ス ("親 プ ロ セ ス ") の PID が 返 さ れ る 可 能 性 が あ る 。 (こ の 議 論 で は 、 子 プ ロ セ ス が CLONE_THREAD を 使 っ て 作 成 さ れ た 場 合 の こ と は 無 視 し て い る 。 子 プ ロ セ ス が CLONE_THREAD を 作 っ て 作 成 さ れ た 場 合 に は 、 呼 び 出 し 元 と 子 プ ロ セ ス は 同 じ ス レ ッ ド グ ル ー プ に 属 す の で 、 getpid (2) は 子 プ ロ セ ス と clone () を 呼 び 出 し た プ ロ セ ス で 同 じ 値 を 返 す の が 「 正 し い 」 。 キ ャ ッ シ ュ が 最 新 と な ら な い 問 題 (stale-cache problem) は 、 flags に CLONE_VM が 含 ま れ て い る 場 合 に も 発 生 し な い 。 ) 本 当 の 値 を 得 る た め に は 、 次 の よ う な コ ー ド を 使 う 必 要 が あ る か も し れ な い 。
#include <syscall.h>
pid_t mypid;
mypid = syscall(SYS_getpid);
例
以 下 の プ ロ グ ラ ム は 、 別 の UTS 名 前 空 間 で 動 作 す る 子 プ ロ セ ス を clone () を 使 っ て 作 成 す る 例 で あ る 。 子 プ ロ セ ス は 、 自 分 の UTS 名 前 空 間 に お い て ホ ス ト 名 を 変 更 す る 。 そ れ か ら 、 親 プ ロ セ ス と 子 プ ロ セ ス の 両 方 で シ ス テ ム の ホ ス ト 名 を 表 示 し 、 親 プ ロ セ ス と 子 プ ロ セ ス の UTS 名 前 空 間 で ホ ス ト 名 が 異 な る こ と を 確 認 す る 。 こ の プ ロ グ ラ ム の 使 用 方 法 に つ い て は setns (2) を 参 照 。
プ ロ グ ラ ム の ソ ー ス
#define
_GNU_SOURCE
#include <sys/wait.h>
#include <sys/utsname.h>
#include <sched.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define
errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \
} while (0)
static int /*
clone さ れ た 子 プ ロ
セ ス の 開 始 関
数 */
childFunc(void *arg)
{
struct utsname uts;
/* 子 プ ロ セ ス の UTS 名 前 空 間 で ホ ス ト 名 を 変 更 す る */
if
(sethostname(arg, strlen(arg)) == -1)
errExit("sethostname");
/* ホ ス ト 名 を 取 得 し 表 示 す る */
if
(uname(&uts) == -1)
errExit("uname");
printf("uts.nodename in child: %s\n",
uts.nodename);
/* sleep
を 使 っ て し ば
ら く 名 前 空 間
を オ ー プ ン さ
れ た ま ま に す
る 。
こ れ に よ り 実
験 を 行 う こ と
が で き る -- 例 え
ば 、
別 の プ ロ セ ス
が こ の 名 前 空
間 に 参 加 す る
な ど 。 */
sleep(200);
return 0; /*
子 プ ロ セ ス を
終 了 す る */
}
#define STACK_SIZE (1024 * 1024) /* clone さ れ る 子 プ ロ セ ス の ス タ ッ ク サ イ ズ */
int
main(int argc, char *argv[])
{
char *stack; /* ス タ ッ ク バ
ッ フ ァ ー の 先
頭 */
char *stackTop; /* ス タ ッ ク
バ ッ フ ァ ー の
末 尾 */
pid_t pid;
struct utsname uts;
if (argc < 2)
{
fprintf(stderr, "Usage: %s
<child-hostname>\n", argv[0]);
exit(EXIT_SUCCESS);
}
/* 子 プ ロ セ ス 用 の ス タ ッ ク を 割 り 当 て る */
stack =
malloc(STACK_SIZE);
if (stack == NULL)
errExit("malloc");
stackTop = stack + STACK_SIZE; /* ス タ ッ
ク は 下 方 向 に
伸 び る も の と
す る */
/* 自
分 専 用 の UTS 名 前
空 間 を 持 つ 子
プ ロ セ ス を 作
成 す る ;
子 プ ロ セ ス は
childFunc() の 実 行 を 開
始 す る */
pid =
clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);
if (pid == -1)
errExit("clone");
printf("clone() returned %ld\n", (long) pid);
/* 親 プ ロ セ ス の 実 行 は こ こ に 来 る */
sleep(1); /* 子 プ ロ セ ス が ホ ス ト 名 を 変 更 す る 時 間 を 与 え る */
/* 親
プ ロ セ ス の UTS 名
前 空 間 で の ホ
ス ト 名 を 表 示
す る ;
こ れ は 子 プ ロ
セ ス の UTS 名 前 空
間 で の ホ ス ト
名 と は 異 な る */
if
(uname(&uts) == -1)
errExit("uname");
printf("uts.nodename in parent: %s\n",
uts.nodename);
if (waitpid(pid,
NULL, 0) == -1) /* 子 プ ロ セ
ス を 待 つ */
errExit("waitpid");
printf("child has terminated\n");
exit(EXIT_SUCCESS);
}
関 連 項 目
fork (2), futex (2), getpid (2), gettid (2), kcmp (2), set_thread_area (2), set_tid_address (2), setns (2), tkill (2), unshare (2), wait (2), capabilities (7), namespaces (7), pthreads (7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。