|
|||||||
|
|
CLONESection: 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 ¤Ï»Ò¥×¥í¥»¥¹(child process)¤¬¥á¥â¥ê¶õ´Ö¡¢¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤Î ¥Æ¡¼¥Ö¥ë¡¢¥·¥°¥Ê¥ë¡¦¥Ï¥ó¥É¥é¡¼¤Î¥Æ¡¼¥Ö¥ë¤Ê¤É¤Î¼Â¹Ô¥³¥ó¥Æ¥¥¹¥È¤Î°ìÉô¤ò ¿Æ¥×¥í¥»¥¹¤È¶¦Í¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¡£ __clone ¤Î¼çÍפʻÈÍÑË¡¤Ï¥¹¥ì¥Ã¥É(threads)¤ò¼ÂÁõ¤¹¤ë¤³¤È¤Ç¤¢¤ë: °ì¤Ä¤Î¥×¥í¥°¥é¥à¤ÎÃæ¤ÎÊ£¿ô¤Î¥¹¥ì¥Ã¥É¤Ï¶¦Í¤µ¤ì¤¿¥á¥â¥ê¶õ´Ö¤Ë ¤ª¤¤¤Æ¶¨Ä´¤·¤Æ¼Â¹Ô¤µ¤ì¤ë¡£»Ò¥×¥í¥»¥¹¤¬ºîÀ®¤µ¤ì¤¿»þ¤Ë¡¢´Ø¿ô fn(arg) ¤¬¼Â¹Ô¤µ¤ì¤ë¡£ fn °ú¤¿ô¤Ï»Ò¥×¥í¥»¥¹¤¬¼Â¹Ô¤ò»Ï¤á¤ë»þ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë ´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¡¼¤Ç¤¢¤ë¡£ arg °ú¤¿ô¤Ï¤½¤Î¤Þ¤Þ fn ´Ø¿ô¤Ø¤ÈÅϤµ¤ì¤ë¡£ fn(arg) ´Ø¿ôŬÍѤ«¤éÊÖ¤ë»þ¤Ë¡¢»Ò¥×¥í¥»¥¹¤Ï½ªÎ»¤¹¤ë¡£ fn ¤Ë¤è¤Ã¤ÆÊÖ¤µ¤ì¤¿À°¿ô¤Ï»Ò¥×¥í¥»¥¹¤Î½ªÎ»¥³¡¼¥É¤È¤Ê¤ë¡£ »Ò¥×¥í¥»¥¹¤ÏÌÀ¼¨Åª¤Ë exit(1) ¤ò¸Æ¤ó¤À¤ê¡¢Ã×̿Ū¤Ê¥·¥°¥Ê¥ë¤ò¼õ¤±¤¿¾ì¹ç¤Ë¤â½ªÎ»¤¹¤ë¡£ child_stack °ú¤¿ô¤Ï»Ò¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë¥¹¥¿¥Ã¥¯¤Î°ÌÃÖ¤ò»ØÄꤹ¤ë¡£ »Ò¥×¥í¥»¥¹¤È¿Æ¥×¥í¥»¥¹¤Ï¥á¥â¥ê¤ò¶¦Í¤¹¤ë¤¿¤á¡¢°ìÈÌ¤Ë»Ò¥×¥í¥»¥¹¤Ï ¿Æ¥×¥í¥»¥¹¤ÈƱ¤¸¥¹¥¿¥Ã¥¯¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¡£ ¤³¤Î¤¿¤á¿Æ¥×¥í¥»¥¹¤Ï»Ò¥×¥í¥»¥¹¤Î¥¹¥¿¥Ã¥¯¤Î¤¿¤á¤Î¥á¥â¥ê¶õ´Ö¤òÀßÄê ¤·¤Æ¡¢¤³¤Î¶õ´Ö¤Ø¤Î¥Ý¥¤¥ó¥¿¡¼¤ò __clone ¤ØÅϤµ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ Linux ¤¬Áö¤Ã¤Æ¤¤¤ë(HP PA ¥×¥í¥»¥Ã¥µ¡¼¤ò½ü¤¯)Á´¤Æ¤Î¥×¥í¥»¥Ã¥µ¤Ç¤Ï ¥¹¥¿¥Ã¥¯¤Ï²¼Êý¤Ø¤ÈÀ®Ä¹¤¹¤ë¡£¤½¤ì¤Ç child_stack ¤ÏÂçÄñ¡¢»Ò¥×¥í¥»¥¹¤Î¥¹¥¿¥Ã¥¯¤Î¤¿¤á¤ËÀßÄꤷ¤¿¥á¥â¥ê¶õ´Ö¤Î°ìÈÖÂ礤¤ ¥¢¥É¥ì¥¹¤Ø¤Î¥Ý¥¤¥ó¥¿¡¼¤Ç¤¢¤ë¡£ flags ¤Î²¼°Ì¥Ð¥¤¥È¤Ï»Ò¥×¥í¥»¥¹¤¬»à¤ó¤À¾ì¹ç¤Ë¿Æ¥×¥í¥»¥¹¤Ø¤ÈÁ÷¤é¤ì¤ë ¥·¥°¥Ê¥ëÈÖ¹æ¤ò»ØÄꤹ¤ë¡£ flags ¤Ï¤µ¤é¤Ë°Ê²¼¤ÎÆâÍÆ¤Î¤¤¤¯¤Ä¤«¤Î¥Ó¥Ã¥È OR(bitwise-or)¤Ç¡¢ ¿Æ¥×¥í¥»¥¹¤È»Ò¥×¥í¥»¥¹¤Î´Ö¤Ç²¿¤ò¶¦Í¤¹¤ë¤«¤ò»ØÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¡£
ÊÖ¤êÃÍÀ®¸ù¤·¤¿¾ì¹ç¡¢¿Æ¤Î¼Â¹Ô¥¹¥ì¥Ã¥É¤Ë¤Ï»Ò¥×¥í¥»¥¹¤Î PID ¤¬ÊÖ¤µ¤ì¤ë¡£ ¼ºÇÔ¤·¤¿¾ì¹ç¡¢ ¿Æ¤Î¥³¥ó¥Æ¥¥¹¥È¤Ë¤Ï -1 ¤¬ÊÖ¤µ¤ì»Ò¥×¥í¥»¥¹¤ÏºîÀ®¤µ¤ì¤Ê¤¤¡£ ¤µ¤é¤Ë errno ¤¬Å¬ÀÚ¤ËÀßÄꤵ¤ì¤ë¡£¥¨¥é¡¼
¥Ð¥°¥«¡¼¥Í¥ë¤Î¥Ð¡¼¥¸¥ç¥ó 2.1.97 ¤Ç¤Ï¡¢ CLONE_PID ¥Õ¥é¥°¤ò»ÈÍѤ·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¥«¡¼¥Í¥ë¤Î¾¤ÎÉôʬ¤ä¿¤¯¤Î ¥·¥¹¥Æ¥à¡¦¥½¥Õ¥È¥¦¥§¥¢¤¬¥×¥í¥»¥¹ ID ¤Ë¤Ï½ÅÊ£¤¬¤Ê¤¤¤³¤È¤ò ²¾Äꤷ¤Æ¤¤¤ë¤¿¤á¤Ë¤Ç¤¢¤ë¡£ libc version 5 ¤Ë¤Ï __clone ¤Î¤¿¤á¤Î¥¨¥ó¥È¥ê¤¬Â¸ºß¤·¤Ê¤¤¡£libc 6 (¤Þ¤¿¤Î̾¤ò glibc2)¤Ë¤Ï ¤³¤Î¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸¤Ëµ½Ò¤·¤Æ¤¢¤ë __clone ¤òÄ󶡤¹¤ë¡£ ½àµò__clone ¥³¡¼¥ë¤Ï Linux ÆÃͤǤ¢¤ê¡¢°Ü¿¢À¤¬É¬Í×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï»ÈÍѤ·¤Æ¤Ï ¤Ê¤é¤Ê¤¤¡£¥¹¥ì¥Ã¥É¤ò»ÈÍѤ·¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥×¥í¥°¥é¥ß¥°¤Ë¤Ï (glibc2 ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë) LinuxThreads ¥é¥¤¥Ö¥é¥ê¤Î¤è¤¦¤Ê¡¢ POSIX 1003.1c thread API ¤ò¼ÂÁõ¤·¤¿¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤¿Êý¤¬Îɤ¤¡£ pthread_create(3thr) ¤ò»²¾È¤¹¤ë¤³¤È¡£ ¤³¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸¤Ï¥«¡¼¥Í¥ë 2.0.x ¤È 2.1.x ¤ª¤è¤Ó glibc 2.0.x ¤Ë Âбþ¤·¤Æ¤¤¤ë¡£ ´ØÏ¢¹àÌÜfork(2), pthread_create(3thr)
Index | ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man2". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |