¹ØÓÚLinuxÖÐ fork(),vfork(),clone()µÄÎÊÌâ
#1 fork()->sys_fork()->do_fork(SIGCHLD,...) SIGCHLDÐźÅÊÇ×Ó½ø³Ì½áÊøÊ±£¬ÏòÄں˷¢Ë͵ÄÐźŠΪʲôÕâÀïµÄclone_flagÒªÓÃSIGCHLD£¿ #2 vfork()->sys_vfork->do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD,...) CLONE_VFORK wait for child exit CLONE_VM share same memory space vforkËù´´½¨µÄÊǽø³ÌÑϸñÀ´½²Êǽø³Ì£¬ºÍ¸¸½ø³Ì¹«ÓÃÄÚ´æ¿Õ¼ä£¬²¢ÇÒÖ»Óеȴ˽ø³Ì½áÊøºó£¬¸¸½ø³Ì²ÅÄܹ»¼ÌÐøÔËÐС£ CLONE_VFORKºÍCLONE_VMÒѾÄܹ»´ïµ½´ËЧ¹û£¬ÎªÊ²Ã´»¹ÒªSIGCHLD£¿ clone_flags = regs.ebx; CLONE_IDLETASK½«PIDÉèÖÃΪ0(Ö»¹©idle½ø³ÌʹÓÃ) clone()->sys_clone()->do_fork(clone_flags & ~CLONE_IDLETASK,...); clone_flags & ~CLONE_IDLETASK Õâ¸ö±êÖ¾³¹µ×²»Ã÷°×¡¡
Çë²ÎÕÕ http://hi.baidu.com/printmyheart/blog/item/baaa19099c300d84d0581b83.html µÚÒ»¸öÎÊÌ⣺ SIGCHLDµ±È»ÐèÒªÁË£¬ÒòΪÔÚcopy_processÖÐÒªÉèÖÃexit_signal µÚ¶þ¸öÎÊÌ⣺ 2.6.32µÄÄںˣ¬ÒѾûÓÐCLONE_IDLETASKÁË ÒýÓà µÚÒ»¸öÎÊÌ⣺ SIGCHLDµ±È»ÐèÒªÁË£¬ÒòΪÔÚcopy_processÖÐÒªÉèÖÃexit_signal µÚ¶þ¸öÎÊÌ⣺ 2.6.32µÄÄںˣ¬ÒѾûÓÐCLONE_IDLETASKÁË ÎÒÕÒÁËÏÂ2.6.32µÄprocess.c£¬ÀïÃæ¾ÓȻûÕÒµ½cloneµÄÏà¹Ø·½·¨¡¡ÔõôֻÓÐforkºÍvforkÁË£¿£¿ {{
Ïà¹ØÎÊ´ð£º
СµÜ×î½üÐèÒªÒ»¸öÓÃsocket»ñÈ¡htmlÎĵµµÄ´úÂ룬µ«ÊÇÀÏÊDz»ÄÜ»ñÈ¡ÍêÕûµÄhtmlÔ´Âë¡£ÔÒò²»Ã÷£¬Íû¸ßÊÖÖ¸µã£¡ C/C++ code: char *Http_GET(char *host,int port,char *data) //·¢ËÍGETÇëÇó { char response[2 ......
¸÷λ´óϺ£¬ÎÒÕýÔÚѧϰLinux£¬¿ÉÊÇLinuxͼÐνçÃæºÍÃüÁîÐÐÖ®¼äÇл»Óöµ½À§ÄÑ£¬ÔÚÃüÁîÐÐÏÂÊäÈëstartx£¬²»ÊǽøÈëͼÐνçÃæ ¶øÊdzöÏÖ ÇëÎʸ÷룬ÕâÊÇΪʲô£¿ ¶øÇÒ°´Ctrl+Alt+F7£¬Ò²²»ÄÜÃüÁîÐнøÈëͼÐνçÃæ¡£&nbs ......
´úÂëÌ«¶à£¬²»ºÃÌù£¬ ´óÖÂÉæ¼°µ½ÕâЩ£º char *arg[MAXSIZE]; char *buffer[MAXSIZE]; ......... arg[k]=(char*)malloc(sizeof(char)*j); strcpy(arg[k],buffer); .................[color=#993300][/color] µ ......
ÎÒÐèÒªÓõ½ÔÚlinuxÏÂÃæ¶ÁдÅäÖÃÎļþµÄ¿â£¬µ½ÍøÉÏÏÂÁËconfiglib¿â£¬½á¹û±àÒë¿ÉÒÔͨ¹ý£¬Á´½Ó¾ÍÓÐÎÊÌâÁË£¬ÀÏÊdzöÏÖundefined reference to µÄÎÊÌ⣬²éÕâ¸ö¿âµÄʹÓ÷½·¨£¬¶¼Ã»ÓоßÌåµÄ½éÉÜ£¬ÓÐÄÄλÒÔǰÓùýÕâ¸ö¿â»òÕßÀàË ......
ÎÒÔÚÐéÄâ»úÀï°²×°ÁËred hat£¬È»ºóÓÃleapFtp°ÑÎÒµÄjavawebÏîÄ¿´«µ½ÐéÄâ»úÏ£¬ÔÚlinuxÀïÎÒÓ¦¾°²×°ºÃjdkºÍtomcat£¬ÎÒÏëÇë½Ìһϸ÷룬ÔõôÔÚlinuxÀï²¼ÖÃÎÒµÄjavaweb¹¤³Ì£¬ÈÃÆäÔËÐÐÆðÀ´µÄ£¬ÇëÏêϸµÄºÍÎÒ˵һÏ£¬Ð»Ð» ² ......