ChinaUnix.net
Ïà¹ØÎÄÕÂÍÆ¼ö:

fork·µ»ØÖµÖÐûÓÐ0

fork()Ϊʲô·µ»ØÁ½¸öÖµ£¿ Ϊʲôʹ×Ó½ø³ÌµÃµ½·µ»ØÖµÊÇ0£¿ лл

by VIP_fuck - C/C++ - 2009-06-10 17:19:11 ÔĶÁ£¨18925£© »Ø¸´£¨35£©

Ïà¹ØÌÖÂÛ

#include #include #include"apue.h" #include"unix_err.h" int glob = 6; char buf[] = "a write to stdout\n"; int main() { int var; pid_t pid; pid_t pid_child; var = 88; if(write(STDOUT_FILENO,buf,sizeof(buf)-1) != sizeof(buf)-1) { err_sys("write error"); } printf("before fork\n"); if( (pid=fork()) < 0 ) { err_sys("fork error"); } else if(pid == 0) { if( (...

by fan2290 - C/C++ - 2006-12-21 10:31:59 ÔĶÁ£¨3562£© »Ø¸´£¨12£©

ÎÒÊÔÁËһϿÉÒÔ£¬ÏëÈ·ÈÏһϡ£¡£¡£ Èç¹ûÕâÑù×öµÄ»°ÓÐûÓÐʲôÎÊÌ⣬Ðè²»ÐèҪעÒâʲô£¿ лл

by zjpangxie - C/C++ - 2005-02-17 11:48:59 ÔĶÁ£¨995£© »Ø¸´£¨2£©

#include #include #include #include int glob =6; int main(){ int var; pid_t pid; var =88; if((pid=fork()<0)) printf("fork error"); else if(pid==0){ glob++; var++; }else{ sleep(2); } printf("pid=%d,glob=%d,var=%d\n",getpid(),glob,var); } Ö´Ðнá¹û£¬ÔõôºÍÊéÉÏ˵µÄÑÏÖØ²»Ò»Ñùѽ [lgl@jlu work]$ gcc -o 8 8...

by redog - C/C++ - 2005-11-05 15:57:22 ÔĶÁ£¨1533£© »Ø¸´£¨10£©

Ö÷º¯Êýmain()ÀïÃæÓÐÒ»¸öwhile(1)µÄÑ­»·£¬Ã¿¸ô1Ãëfork()Ò»´Î£¬×Ó½ø³Ì´òÓ¡Ò»´®×Ö·ûÖ®ºóµ÷ÓÃexit(0),¸¸½ø³Ì¼ÌÐøloop¡£µ«ÊÇ´Óps¿´ÏµÍ³µÄ½ø³Ì״̬£¬·¢ÏÖÓкöàͬÃû×ֵĽø³Ì£¬ÕâÊÇΪʲô°¢£¬×Ó½ø³ÌÓ¦¸ÃÈçºÎÍ˳ö°¢£¿Ð»Ð»£¡

by yangruqing - C/C++ - 2008-11-07 13:17:32 ÔĶÁ£¨2420£© »Ø¸´£¨5£©

#include ; #include ; #include ; #include ; void main() { if (fork() == 0) sleep(10); else exit(0); } test15:/usr/tux/zp/tmp $ cc -o zomb test.c test15:/usr/tux/zp/tmp $ ./zomb test15:/usr/tux/zp/tmp $ ps -ef|grep zomb tux 8160 8030 0 15:15:13 pts/ti 0:00 grep zomb tux 8158 1 0 15:15:...

by tom2zhang - C/C++ - 2005-04-28 12:55:39 ÔĶÁ£¨1616£© »Ø¸´£¨10£©

c++дÁËÒ»¸ö³ÌÐò£¬Éú³ÉÁËÒ»¸öỊ̈߳¬¶øºóÔÚ¸ÃÏß³ÌÖе÷ÓÃforkÉú³ÉÒ»¸ö×Ó½ø³ÌÀ´Ö´ÐÐ perl½Å±¾(¸Ã½Å±¾Ö´ÐÐÕýÈ·)£¬¸¸½ø³ÌÔÚÒ»¸öÑ­»·Öе÷ÓÃwaitpid·Ç×èÈûµÄ²é¿´×Ó½ø³Ì״̬£¬µÈ´ý×Ó½ø³ÌÍ˳ö¡£ ½á¹û·¢ÏÖ¸¸½ø³ÌÎÞ·¨Õý³£µÄµÃµ½×Ó½ø³ÌµÄ½áÊø×´Ì¬£¬waitpid¿ªÊ¼·µ»ØÊÇ0£¬ÔÚ×Ó½ø³Ì½áÊøºó£¬ ¸¸½ø³Ì·µ»ØµÄÊÇ-1. ÇëÎÊÕâÊÇʲôԭÒò£¬ÔÚÏß³ÌÖÐÔÙÉú³É½ø³Ì»áÓÐʲôÎÊÌâô£¿

by chesterlk - C/C++ - 2007-01-14 10:51:46 ÔĶÁ£¨2270£© »Ø¸´£¨2£©

ÏÈ fork ×Ó½ø³ÌÈ»ºó execl ÁíÒ»¸ö¿ÉÖ´ÐгÌÐò£¬ ÈçºÎµÃµ½Õâ¸ö¿ÉÖ´ÐгÌÐò½áÊøµÄ·µ»ØÖµ£¿

by zxcdewq - C/C++ - 2006-03-30 15:08:52 ÔĶÁ£¨1553£© »Ø¸´£¨1£©

pid_t pid; int stat_loc; /*¸¸½ø³Ì*/ if ((pid=fork())>0) { waitpid(pid,&stat_loc,0); /*¸¸½ø³ÌµÈ´ý½ø³ÌºÅΪpidµÄ×Ó½ø³ÌµÄ·µ»Ø*/ } else { /*×Ó½ø³ÌµÄ´¦Àí¹ý³Ì*/ exit(1); } /*¸¸½ø³Ì*/ printf("stat_loc is [%d]\n",stat_loc);

by dida_327 - ÄÚºË/ǶÈë¼¼Êõ - 2005-12-16 09:10:58 ÔĶÁ£¨8040£© »Ø¸´£¨5£©

ÕâÊÇ¡¾FreeBSD²Ù×÷ϵͳÉè¼ÆÓëʵÏÖ¡¿µÄϰÌâ5.5£¬Ô­ÎÄÈçÏ£º 5.5 Explain why the vfork system call will always be more efficient than a clever implementation of the fork system call.

by ÓêË¿·çƬ - BSD - 2006-03-29 20:58:05 ÔĶÁ£¨4079£© »Ø¸´£¨8£©

apueÖÐ8-1µÄÀý×Ó£¬£¨µÚÒ»°æÓëµÚ¶þ°æ ½Ô¿É£© myfork.c --------------------------------------------------------------------------- #include "apue.h" int glob=6; char buf[]=" a write to stdout\n"; int main(int argc, char *argv[]) { int var; pid_t pid; var=88; if(write(STDOUT_FILENO,buf,sizeof(buf)-1)!=sizeof(buf)-1) err_sys("write error"); prin...

by sunshine217 - C/C++ - 2009-01-17 22:41:34 ÔĶÁ£¨1570£© »Ø¸´£¨8£©