CLONE
Section: Linux Programmer's Manual
(2)
Updated: 25 april 1998
Index
Return to Main Contents
À̸§
__clone - ÇÁ·Î¼¼½º »ý¼º
»ç¿ë¹ý
#include <sched.h>
int __clone(int (*fn) (void *arg), void *child_stack, int flags, void *arg)
¼³¸í
__clone
´Â
fork(2)
ó·³ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÑ´Ù.
fork(2)
¿Í´Â ´Þ¸®,
__clone
Àº ÀÚ½Ä ÇÁ·Î¼¼½º°¡ ¸Þ¸ð¸® °øÀ¯, ÆÄÀÏ ±â¼úÀÚµéÀÇ Å×À̺í, ½Ã±×³Î Çڵ鷯ÀÇ Å×À̺í°ú °°ÀÌ
±× ºÎ¸ð ÇÁ·Î¼¼½º¿Í ÇÔ²² ½ÇÇà ¹®¸ÆÀÇ ºÎºÐµéÀ» °øÀ¯Çϵµ·Ï Çã¿ëÇÑ´Ù.
__cloneÀÇ ÁÖµÈ »ç¿ëÀº ¾²·¹µå¸¦ ±¸ÇöÇÏ´Â °ÍÀÌ´Ù. °øÀ¯ ¸Þ¸ð¸®¿¡¼ µ¿½Ã¿¡ ½ÇÇàÇÏ´Â
ÇÁ·Î±×·¥¿¡¼ ¸ÖƼ ¾²·¹µåÀÇ Á¦¾î. ÀÚ½Ä ÇÁ·Î¼¼½º°¡ »ý¼ºµÇ¸é, ÀÌ´Â ÇÔ¼ö ¾îÇø®ÄÉÀ̼ÇÀ»
½ÇÇà½ÃŲ´Ù.
fn(arg).
fn
Àμö´Â ½ÇÇà Ãʱ⿡ ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ ÀÇÇØ È£ÃâµÇ´Â ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ´Ù.
arg
´Â
fn
¿¡ ´Ù½Ã Àü´ÞµÇ´Â ÀμöÀÌ´Ù.
fn(arg)
ÇÔ¼ö ¾îÇø®ÄÉÀ̼ÇÀÌ ¸®ÅÏÇϸé, ÀÚ½Ä ÇÁ·Î¼¼½º´Â Á¾·áµÈ´Ù.
fn
¿¡ ÀÇÇØ ¸®ÅϵǴ integer´Â ÀÚ½ÄÇÁ·Î¼¼½º°¡ ºüÁ®³ª°¡´Â exitÄÚµåÀÌ´Ù. ÀÚ½Ä ÇÁ·Î¼¼½º´Â
exit(1)
À» È£ÃâÇϰųª, fatal ½Ã±×³ÎÀ» ¹ÞÀº ÈÄ¿¡ ¸í¹éÇÏ°Ô Á¾·áµÉ ¼ö ÀÖ´Ù.
child_stack
Àμö´Â ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ ÀÇÇØ »ç¿ëµÇ´Â ½ºÅÃÀÇ À§Ä¡¸¦ ¸í½ÃÇÑ´Ù. ÀÚ½Ä ¹× ºÎ¸ð ÇÁ·Î¼¼½º°¡
¸Þ¸ð¸®¸¦ °øÀ¯ÇÒ ¼ö Àֱ⶧¹®¿¡, ÀϹÝÀûÀ¸·Î ÀÚ½Ä ÇÁ·Î¼¼½º°¡ ºÎ¸ðÇÁ·Î¼¼½º¿Í µ¿ÀÏÇÑ ½ºÅÃ
¿¡¼ ½ÇÇàµÇ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù. ºÎ¸ð ÇÁ·Î¼¼½º´Â µû¶ó¼ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ À§ÇÑ ¸Þ¸ð¸®¸¦
¼³Á¤ÇØ¾ß Çϸç,
__clone
¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ Àü´ÞÇØ¾ß ÇÑ´Ù.
¸®´ª½º¸¦ ½ÇÇàÇÏ´Â ¸ðµç ÇÁ·Î¼¼¼(HP PA ÇÁ·Î¼¼¼ Á¦¿Ü)µé »ó¿¡¼ ½ºÅÃÀº ¾Æ·¡ÂÊÀ¸·Î
½×À̹ǷÎ,
child_stack
Àº ÀÚ½Ä ½ºÅÃÀ» À§ÇÑ ¼³Á¤¿¡ º¸Åë ¸Þ¸ð¸® °ø°£ÀÇ »óÀ§ ÁÖ¼Ò¸¦ °¡¸®Å²´Ù.
ÀûÀº ¹ÙÀÌÆ®ÀÇ
flags
´Â ÀÚ½ÄÀÌ Á×À» ¶§ ºÎ¸ð¿¡°Ô Àü¼ÛµÇ´Â ½Ã±×³ÎÀÇ ¹øÈ£¸¦ Æ÷ÇÔÇÑ´Ù.
flags
´Â ¶ÇÇÑ ºÎ¸ð¿Í ÀÚ½Ä ÇÁ·Î¼¼½º »çÀÌ¿¡ ¹«¾ùÀÌ °øÀ¯µÇ´Â°¡¸¦ ¸í½ÃÇϱâ À§Çؼ ´ÙÀ½ÀÇ »ó¼öµé Áß
Çϳª ȤÀº ¸î°¡Áö¸¦ bitwiseÇÒ ¼ö ÀÖ´Ù.
- CLONE_VM
-
¸¸ÀÏ
CLONE_VM
ÀÌ ¼³Á¤µÇ¸é, ºÎ¸ð¿Í ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀº µ¿ÀÏÇÑ ¸Þ¸ð¸® °ø°£¿¡¼ ½ÇÇàµÈ´Ù.
ƯÈ÷, ºÎ¸ð ÇÁ·Î¼¼½º ȤÀº ÀÚ½Ä ÇÁ·Î¼¼½ºµé¿¡ ÀÇÇØ ¼öÇàµÇ´Â ¸Þ¸ð¸® ÀÛ¼ºÀº ´Ù¸¥ ÇÁ·Î¼¼½º
¿¡¼µµ º¼ ¼ö ÀÖ´Ù. ´õ¿ì±â ÀÚ½Ä ¶Ç´Â ºÎ¸ð ÇÁ·Î¼¼½º¿¡ ÀÇÇØ
mmap(2)
ȤÀº
munmap(2)À¸·Î¼öÇàµÇ´Â¸Þ¸ð¸®¸ÅÇζǴ¾ð¸ÅÇοª½Ã´Ù¸¥ÇÁ·Î¼¼½º¿¡¿µÇâÀ»¹ÌÄ£´Ù.
¸¸ÀÏ
CLONE_VM
ÀÌ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, ÀÚ½Ä ÇÁ·Î¼¼½º´Â .BR __cloneÀÇ ½Ã°£¿¡¼, ºÎ¸ðÀÇ ¸Þ¸ð¸® °ø°£ÀÇ ºÐ¸®µÈ
º¹Á¦³»¿¡¼ ½ÇÇàµÈ´Ù.
fork(2)
ÀÇ °æ¿ì¿¡¼ º¼ ¼ö ÀÖµíÀÌ, ÇÁ·Î¼¼½ºµé Áß Çϳª¿¡ ÀÇÇØ ¼öÇàµÇ´Â ¸Þ¸ð¸® ÀÛ¼º ȤÀº
ÆÄÀÏ ¸ÅÇÎ/¾ð¸ÅÇÎÀº ´Ù¸¥ °Í¿¡ ´ëÇØ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù.
- CLONE_FS
-
¸¸ÀÏ
CLONE_FS
°¡ ¼³Á¤µÇ¸é, ºÎ¸ð¿Í ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀº µ¿ÀÏÇÑ ÆÄÀÏ ½Ã½ºÅÛ Á¤º¸¸¦ °øÀ¯ÇÑ´Ù.
ÀÌ´Â ÆÄÀÏ ½Ã½ºÅÛÀÇ ·çÆ®, ÇöÀç ÀÛ¾÷ µð·ºÅ丮, ±×¸®°í umask¸¦ Æ÷ÇÔÇÑ´Ù.
ºÎ¸ð ȤÀº ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ¼öÇàµÇ´Â
chroot(2),
chdir(2),
¶Ç´Â
umask(2)
¿¡ ´ëÇÑ È£Ãâ ¿ª½Ã ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù.
¸¸ÀÏ
CLONE_FS
ÀÌ ¼³Á¤µÇÁö ¾ÊÀ¸¸é ÀÚ½Ä ÇÁ·Î¼¼½º´Â
__clone
ÀÇ ½Ã°£¿¡¼, ºÎ¸ðÀÇ ¸Þ¸ð¸® °ø°£ÀÇ ºÐ¸®µÈ
º¹Á¦³»¿¡¼ ½ÇÇàµÈ´Ù.
ÇÑ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ³ªÁß¿¡ ¼öÇàµÉ
chroot(2),
chdir(2),
umask(2)
¿¡ ´ëÇÑ È£ÃâÀº ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù.
- CLONE_FILES
-
¸¸ÀÏ
CLONE_FILES
ÀÌ ¼³Á¤µÇ¸é, ºÎ¸ð¿Í ÀÚ½Ä ÇÁ·Î¼¼½º´Â µ¿ÀÏÇÑ ÆÄÀÏ ±â¼úÀÚ Å×À̺íÀ» °øÀ¯ÇÑ´Ù. ÆÄÀÏ ±â¼úÀÚµéÀº Ç×»ó ºÎ¸ð ±×¸®°í ÀÚ½Ä ÇÁ·Î¼¼½º ³»ÀÇ
µ¿ÀÏÇÑ ÆÄÀϵéÀ» ÂüÁ¶ÇÑ´Ù. ºÎ¸ð ȤÀº ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ¸¸µé¾îÁø ¸ðµç ÆÄÀÏ ±â¼úÀÚ´Â ´Ù¸¥ ÇÁ·Î¼¼½º¿¡¼µµ ¿ª½Ã Ÿ´çÇÏ´Ù. ÀÌ¿Í
À¯»çÇÏ°Ô, ¸¸ÀÏ ÇÁ·Î¼¼½ºµéÁß Çϳª°¡ ÆÄÀÏ ±â¼úÀÚ¸¦ ´Ý°Å³ª, °ü·ÃµÈ Ç÷¡±×µéÀ» º¯°æ½ÃÅ°¸é, ±âŸ ÇÁ·Î¼¼½º°¡ ¿ª½Ã ¿µÇâÀ» ¹Þ´Â´Ù..
CLONE_FILES
ÀÌ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, ÀÚ½Ä ÇÁ·Î¼¼½º´Â
__cloneÀǽ𣿡ºÎ¸ðÇÁ·Î¼¼½º¿¡¼¿¸°ÆÄÀϱâ¼úÀÚµéÀǺ¹»çº»À»»ó¼Ó¹Þ´Â´Ù.
ºÎ¸ð ȤÀº ÀÚ½Ä ÇÁ·Î¼¼½ºµé Áß Çϳª¿¡ ÀÇÇØ ³ªÁß¿¡ ¼öÇàµÉ ÆÄÀÏ ±â¼úÀڵ鿡 ´ëÇÑ ¿¬»êÀº ´Ù¸¥ °Í¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù.
- CLONE_SIGHAND
-
CLONE_SIGHAND
ÀÌ ¼³Á¤µÇ¸é, ºÎ¸ð ¹× ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀº ½Ã±×³Î 󸮱âÀÇ µ¿ÀÏÇÑ Å×À̺íÀ» °øÀ¯ÇÑ´Ù. ¸¸ÀÏ º¸¸ð ȤÀº
ÀÚ½Ä ÇÁ·Î¼¼½º°¡
sigaction(2)
¸¦ È£ÃâÇÏ¿© ½Ã±×³Î°ú °ü·ÃµÈ ÇàÀ§¸¦ º¯°æ½ÃÅ°°íÀÚ ÇÑ´Ù¸é, ´Ù¸¥
ÇÁ·Î¼¼½º³»ÀÇ ±× ÇàÀ§ ¿ª½Ã º¯°æµÈ´Ù. ±×·¯³ª, ºÎ¸ð¿Í ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀº ¿©ÀüÈ÷ µ¶Æ¯ÇÑ ½Ã±×³Î ¸¶½ºÅ©°ú ÀÏ·ÃÀÇ
Ææµù ½Ã±×³ÎµéÀ» °®´Â´Ù. µû¶ó¼ ±×µéÁß Çϳª´Â ´Ù¸¥ ½Ã±×³Î¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê°í,
sigprocmask(2)
À» »ç¿ëÇÏ¿© ÀϺΠ½Ã±×³ÎÀ» ºí·ÎÅ·Çϰųª, ÇÏÁö ¾Ê´Â´Ù.
CLONE_SIGHAND
ÀÌ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, ÀÚ½Ä ÇÁ·Î¼¼½º´Â
__clone
ÀÇ ½Ã°£¿¡ ºÎ¸ð ÇÁ·Î¼¼½º¿¡¼ ¿¸° ½Ã±×³Î 󸮱âµéÀÇ º¹»çº»À» »ó¼Ó¹Þ´Â´Ù.
ºÎ¸ð ȤÀº ÀÚ½Ä ÇÁ·Î¼¼½ºµé Áß Çϳª¿¡ ÀÇÇØ ³ªÁß¿¡ ¼öÇàµÉ ÆÄÀÏ ±â¼úÀڵ鿡 ´ëÇÑ ¿¬»êÀº ´Ù¸¥ ÇÁ·Î¼¼½º
¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù.
ÇϳªÀÇ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ¼öÇàµÇ´Â
sigaction(2)
¿¡ ´ëÇÑ È£ÃâÀº ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù.
- CLONE_PID
-
¸¸ÀÏ
CLONE_PID
ÀÌ ¼³Á¤µÇ¸é, ÀÚ½Ä ÇÁ·Î¼¼½º´Â ºÎ¸ð ÇÁ·Î¼¼½º¿Í °°Àº µ¿ÀÏÇÑ ÇÁ·Î¼¼½º ID¸¦ °®°í ¸¸µé¾îÁø´Ù.
¸¸ÀÏ
CLONE_PID
ÀÌ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, ÀÚ½Ä ÇÁ·Î¼¼½º´Â ºÎ¸ð ÇÁ·Î¼¼½º¿Í ´Ù¸¥ µ¶Æ¯ÇÑ ÇÁ·Î¼¼½º ID¸¦ ¼ÒÀ¯ÇÑ´Ù.
¹Ýȯ°ª
¼º°øÇϸé, ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ PID´Â ºÎ¸ðÀÇ ½ÇÇàÇÒ ¾²·¹µå ³»¿¡ ¸®ÅϵȴÙ. ½ÇÆÐÇϸé, -1ÀÌ
ºÎ¸ðÀÇ ¹®¸Æ¿¡ ¸®Åϵǰí, ¾î¶² ÀÚ½Ä ÇÁ·Î¼¼½ºµµ »ý¼ºµÇÁö ¾ÊÀ¸¸ç,
errno
°¡ ÀûÀýÇÏ°Ô ¼³Á¤µÉ °ÍÀÌ´Ù.
¿¡·¯
- EAGAIN
-
ÀÌ¹Ì ³Ê¹«³ª ¸¹Àº ÇÁ·Î¼¼½ºµéÀÌ ½ÇÇàÁß¿¡ ÀÖ´Ù.
- ENOMEM
-
__clone
Àº ÀڽĿ¡ ´ëÇÑ ÀÛ¾÷ ±¸Á¶¸¦ ÇÒ´çÇϰųª, º¹»çµÉ ÇÊ¿ä°¡ ÀÖ´Â ºÎ¸ðÀÇ ÄÁÅؽºÆ®¿¡ ´ëÇÑ ºÎºÐµéÀ» º¹»çÇϴµ¥
ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö ¾ø´Ù.
¹ö±×
Ä¿³ÎÀÇ 2.1.97¹öÀüÀ¸·Î¼,
CLONE_PID
Ç÷¡±×´Â »ç¿ëµÇ¾î¼´Â ¾ÈµÈ´Ù. ¿Ö³ÄÇϸé, Ä¿³ÎÀÇ ´Ù¸¥ ºÎºÐµé°ú ´ëºÎºÐÀÇ ½Ã½ºÅÛ ¼ÒÇÁÆ®¿þ¾î°¡
¾ÆÁ÷ ÇÁ·Î¼¼½º ID´Â µ¶Æ¯ÇÑ °ÍÀ¸·Î¼ °¡Á¤ÇÏ°í Àֱ⠶§¹®ÀÌ´Ù.
libc ¹öÀü 5. libc 6 (a.k.a. glibc 2)°¡ Á¦°øÇÏ´Â
__clone
¿¡ ´ëÇÑ Ç׸ñÀÌ ¾ø´Ù.
__clone
ÀÌ ¼³¸í¼¿¡¼ ¼³¸íÇÑ ¹Ù¿Í °°´Ù.
ȣȯ
The
__clone
È£ÃâÀº ¸®´ª½º¿ëÀÌ°í, Æ÷ÆÃÇÒ Àǵµ¸¦ Áö´Ñ ÇÁ·Î±×·¥¿¡¼´Â »ç¿ëµÇ¼´Â ¾ÈµÈ´Ù.
ÇÁ·Î±×·¡¹Ö ¾²·¹µå °¡´ÉÇÑ ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇؼ, ¸®´ª½º ¾²·¹µå ¶óÀ̺귯¸®¿Í °°Àº
POSIX 1003.1c thread API¸¦ ±¸ÇöÇÏ´Â ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù.
pthread_create(3thr)
¸¦ ÂüÁ¶Ç϶ó. ÀÌ ¼³¸í¼ ÆäÀÌÁö´Â Ä¿³Î 2.0.x ±×¸®°í 2.1.x, ±×¸®°í glibc 2.0.x¿¡ »óÀÀÇÑ´Ù.
°ü·Ã Ç׸ñ
fork(2),
pthread_create(3thr)
¿ªÀÚ
ASPLINUX<man@asp-linux.co.kr>, 2000³â 7¿ù 29ÀÏ
Index
- À̸§
-
- »ç¿ë¹ý
-
- ¼³¸í
-
- ¹Ýȯ°ª
-
- ¿¡·¯
-
- ¹ö±×
-
- ȣȯ
-
- °ü·Ã Ç׸ñ
-
- ¿ªÀÚ
-
This document was created by
man2html,
using the manual pages.
Time: 08:06:58 GMT, March 25, 2004