如何正确计算fork创建的进程?

时间:2019-06-19 19:06:44

标签: c fork

我的C代码遇到了有关我们教授使用fork创建的进程的问题,以弄清它创建的进程数量。

pid1 = fork();

if (pid1 != 0) {
   pid2 = fork();
   pid3 = fork();
}
else {
   pid4 = fork(); 
}

1 个答案:

答案 0 :(得分:2)

运行代码仅在某种程度上有所帮助(并且在考试期间无法完成!)-更好地绘制过程树。规则是,每个子进程都会在产生fork的调用之后开始执行,父进程的pid为非零,子进程的pid为零。

         main
       /   |   \
    pid1 pid2 pid3
     /     |
  pid4   pid3

我们可以看到main产生了三个孩子pid1pid2pid3pid1很小,而另外两个则是在真实的{ {1}}块)。 if继续执行条件的pid1部分,并在完成之前生成elsepid4是唯一的把戏:它在pid2处再次产生,因为这是执行开始的地方。

答案:

  

共创建6个进程(pid3和5个子进程)