下面的代码会创建多少个进程?


   
  fork();
  
fork() && fork() || fork();
fork();

c Linux 趣味

忧郁的触手 12 years, 9 months ago

应该是19个进程

第一个fork(), 最后一个fork(), 肯定会执行,故总进程数= 2 * (fork() && fork() || fork()) *2 。

现在主要看这个fork2 && fork3 || fork4;

cond1 && cond2 || cond3表达式计算流程是这样的:

一、cond1为假,那就不判断cond2了,接着判断cond3
二、cond1为真,这又要分为两种情况:
1、cond2为真,这就不需要判断cond3了
2、cond2为假,那还得判断cond3

每个fork()返回值要么等于0,要么大于0,所以我把fork() && fork() || fork();改一下:

   
  if(fork2 返回> 0)
  
{
if(fork3 返回> 0)
; //1个进程
else(fork3 返回 == 0)
fork4 //2个进程
}
else
{
fork4//2个进程
}

结果19个进程

一望无际的大饼 answered 12 years, 9 months ago

Your Answer