对fork()的研究积累

fork()在Unix/Linux中用来创建新进程。fork()的中文意思就是分叉,也意味着,调用一次fork(),返回两次。
fork()的功能:
   父进程返回大于1,即父进程id;
   子进程返回等于0,
   错误返回<0.
 
一般的*nix书中举如下例子来说明此函数:
putchar('A');
fork();
fork();
putchar('A');
 
运行后输出八个A。但是这个例子并不好,因为它很容易让人误以为每个进程都从程序的开始执行。其实,这是因为putchar()这样的函数将字符放入了缓冲区的缘故,它掩盖了进程抢占式顺序执行的真相。
改为如下程序更好:
printf("A\n");//此处加\n即是清除缓冲区
fork();
fork();
putchar('A');
 
运行后输出五个A。
 
另一段程序片段如下:
for(i=1i<5;i++)
   if(childpid-fork())
       break;
printf("a\n");
 
运行后打印5个a。这个程序中的if语句容易让人迷惑。其实它是很经典的,这个语句中,父进程总是返回,子进程总是跳出。所以才会有打印5个a的结果。
 
其实,面对fork(),我们只需牢牢记住它的返回规律,那么一切问题都迎刃而解了。

你可能感兴趣的:(编程,linux,职场,休闲,进程管理)