一个考察fork的题目

下面这个程序,让你计算一下产生多少个子进程。
int main()
{
    fork();
    fork()&&fork()||fork();
    fork();
}

解答:
fork的基本性质大家都知道,返回0是子进程,返回1是父进程。这个题目容易让人晕菜,所以要掌握方法。
下面用图示的方法看看它的执行过程。
                                                                        
            2(第一个fork后)   -----   +2(执行第二个fork之后)  -(返回值为0)--   +2 (短路&&,执行第四个fork)
                                                                      |      
                                                               (返回值为1)
                                                                      |                                                           
                                                            +2(执行第三个fork) -(返回值为0)-- +2(执行第四个fork)
  到最后一个fork执行之前,已经有了2+2+2+2+2=10个进程,最后再fork一次,一共是20个。
  除去最开始的进程,一共产生了20-1=19个进程。

原文地址:https://www.cnblogs.com/marsbible/p/3340861.html