1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (c) 1992 Drew Eckhardt <drew@cs.colorado.edu>, March 28, 1992
.\" May be distributed under the GNU General Public License.
.\" Modified by Michael Haardt <michael@moria.de>
.\" Modified Sat Jul 24 13:22:07 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified 21 Aug 1994 by Michael Chastain <mec@shell.portal.com>:
.\" New man page (copied from 'fork.2').
.\" Modified 10 June 1995 by Andries Brouwer <aeb@cwi.nl>
.\" Modified 25 april 1998 by Xavier Leroy <Xavier.Leroy@inria.fr>
.\"
.\" Japanese Version Copyright (c) 1998 HANATAKA Shinya
.\" all rights reserved.
.\" Translated Mon Jun 22 02:05:10 JST 1998
.\" by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
.\"
.TH CLONE 2 "25 april 1998" "Linux 2.0.33" "Linux Programmer's Manual"
.SH ̾
__clone \- ҥץ
.SH
.B #include <sched.h>
.sp
.BI "int __clone(int (*" "fn" ") (void *" "arg" "), void *" "child_stack" ", int " "flags" ", void *" "arg" ")"
.SH
.B __clone
.BR fork (2)
Τ褦˿ץ롣
.BR fork (2)
Ȱä
.B __clone
ϻҥץ(child process)֡ե롦ǥץ
ơ֥롢ʥ롦ϥɥ顼Υơ֥ʤɤμ¹ԥƥȤΰ
ƥץȶͭ뤳Ȥǽˤ롣
.B __clone
μפʻˡϥå(threads)뤳ȤǤ:
ĤΥץʣΥåɤ϶ͭ줿֤
ƶĴƼ¹Ԥ롣
ҥץ줿ˡؿ
.IR fn ( arg )
¹Ԥ롣
.I fn
ϻҥץ¹ԤϤ˸ƤӽФ
ؿؤΥݥǤ롣
.I arg
ϤΤޤ
.I fn
ؿؤϤ롣
.IR fn ( arg )
ؿŬѤ֤ˡҥץϽλ롣
.I fn
ˤä֤줿ϻҥץνλɤȤʤ롣
ҥץŪ
.BR exit (1)
Ƥꡢ̿Ūʥʥˤ⽪λ롣
.I child_stack
ϻҥץˤäƻѤ륹åΰ֤ꤹ롣
ҥץȿƥץϥͭ뤿ᡢ̤˻ҥץ
ƥץƱåǼ¹Ԥ뤳ȤǤʤ
ΤƥץϻҥץΥåΤΥ֤
ơζ֤ؤΥݥ
.BR __clone
ϤʤФʤʤ
Linux äƤ(HP PA ץå)ƤΥץåǤ
åϲؤĹ롣
.I child_stack
ҥץΥåΤꤷ֤ΰ礭
ɥ쥹ؤΥݥǤ롣
.I flags
β̥ХȤϻҥץ˿ƥץؤ
ʥֹꤹ롣
.I flags
Ϥ˰ʲƤΤĤΥӥå OR(bitwise-or)ǡ
ƥץȻҥץδ֤Dzͭ뤫ꤹ뤿˻Ѥ롣
.TP
.B CLONE_VM
.B CLONE_VM
ꤵ줿硢ƥץȻҥץƱ֤Ǽ¹Ԥ롣
ä˿ƥץҥץˤäƥ˽ޤ줿Ƥ¾Υץ
ˤäƤ⸫뤳ȤǤ롣ˡ
ҥץƥץ
.BR mmap (2)
.BR munmap (2)
Ȥäƥޥåפꥢޥåפ硢
¾Υץؤƶ롣
.B CLONE_VM
ꤵƤʤ硢ҥץ
.BR __clone
¹Ԥ줿ǤοƥץΥ֤ԡ
̤Υ֤Ǽ¹Ԥ롣
ץǹԤʤ줿ؤνߡ
եΥޥå/ޥåפ
.BR fork (2)
ξƱ͡¾ˤϱƶʤ
.TP
.B CLONE_FS
.B CLONE_FS
ꤵ줿硢ƥץȻҥץƱե롦ƥ
ͭ롣ˤϥե륷ƥΥ롼(root)丽ߤ
ǥ쥯ȥ(current working directory) umask ޤޤ롣
ƥץҥץˤäƹԤʤ줿Ƥ
.BR chroot (2),
.BR chdir (2),
.BR umask (2)
¾Υץˤƶ롣
.B CLONE_FS
ꤵƤʤ硢ҥץ
.BR __clone
¹Ԥ줿ǤοƥץΥե롦ƥΥԡ
Ѥ롣
ʸ塢ץˤäƹԤʤ줿
.BR chroot (2), chdir (2), umask (2)
¾ˤϱƶʤ
.TP
.B CLONE_FILES
.B CLONE_FILES
ꤵ줿硢ƥץȻҥץϥե롦ǥץ
ơ֥ͭ롣ե롦ǥץϻҥץȿƥץ
ˤƾƱեȤ롣ƥץҥץˤä
줿ƤΥե롦ǥץ¾ΥץˤƤ
ͭǤ롣Ʊͤˡץե롦ǥץ
(close)䡢ꤵ줿ե饰ѹԤʤä¾Υץ
ƶ롣
.B CLONE_FILES
ꤵƤʤ硢ҥץ
.BR __clone
¹Ԥ줿Ǥοƥץץ(open)ƤƤ
ե롦ǥץΥԡѾ롣
ʸ塢ץˤäƹԤʤ줿ե롦ǥץ
ФƹԤʤ줿¾ˤϱƶʤ
.TP
.B CLONE_SIGHAND
.B CLONE_SIGHAND
ꤵ줿硢ƥץȻҥץƱʥ롦ϥɥ顼
ơ֥ͭ롣ƥץޤϻҥץ
.BR sigaction (2)
뤷ơʥ˴ϢŤ줿ưѹ硢Ʊͤ
¾Υץưѹ롣ǡƥץȻҥץ
̤Υʥ롦ޥ(signal mask)ȲΥʥνäƤ롣
ǡץ¾Υץ˱ƶͿ뤳Ȥʤ
.BR sigprocmask (2)
Ѥƥʥػ(block)(unblock)Ǥ롣
.B CLONE_SIGHAND
ꤵƤʤ硢ҥץ
.B __clone
뤵줿ǤοƥץΥʥ롦ϥɥ顼ΥԡѾ롣
ʸ塢ץˤäƹԤʤ줿
.BR sigaction (2)
¾Υץˤϱƶʤ
.TP
.B CLONE_PID
.B CLONE_PID
ꤵ줿硢ҥץϿƥץƱץ ID Ǻ롣
.B CLONE_PID
ꤵƤʤ硢ҥץΩץ ID
ƥץȤ϶̤롣
.SH ֤
硢Ƥμ¹ԥåɤˤϻҥץ PID ֤롣
Ԥ硢 ƤΥƥȤˤ \-1 ֤ҥץϺʤ
.I errno
Ŭڤꤵ롣
.SH 顼
.TP
.B EAGAIN
ǤäƤץ¿롣
.TP
.B ENOMEM
.B __clone
ҥץΤ˳ݤ٤¤Τ䡢ƤΥƥȤ
ԡΤɬפʥƤ뤳ȤǤʤ
.SH Х
ͥΥС 2.1.97 Ǥϡ
.B CLONE_PID
ե饰ѤƤϤʤʤͥ¾ʬ¿
ƥࡦեȥץ ID ˤϽʣʤȤ
ꤷƤ뤿ˤǤ롣
libc version 5 ˤ
.B __clone
ΤΥȥ꤬¸ߤʤlibc 6 (ޤ̾ glibc2)ˤ
Υޥ˥奢롦ڡ˵ҤƤ
.B __clone
롣
.SH
.B __clone
Linux ͭǤꡢܿɬפʥץǤϻѤƤ
ʤʤåɤѤץꥱΥץߥˤ
LinuxThreads 饤֥Τ褦ʡPOSIX 1003.1c thread API
饤֥Ѥɤ
.BR pthread_create (3thr)
Ȥ뤳ȡ
ޥ˥奢롦ڡϥͥ 2.0.x 2.1.x glibc 2.0.x
бƤ롣
.SH Ϣ
.BR fork (2),
.BR pthread_create (3thr)
|