我的C代码遇到了有关我们教授使用fork创建的进程的问题,以弄清它创建的进程数量。
pid1 = fork();
if (pid1 != 0) {
pid2 = fork();
pid3 = fork();
}
else {
pid4 = fork();
}
答案 0 :(得分:2)
运行代码仅在某种程度上有所帮助(并且在考试期间无法完成!)-更好地绘制过程树。规则是,每个子进程都会在产生fork
的调用之后开始执行,父进程的pid
为非零,子进程的pid
为零。
main
/ | \
pid1 pid2 pid3
/ |
pid4 pid3
我们可以看到main
产生了三个孩子pid1
,pid2
和pid3
(pid1
很小,而另外两个则是在真实的{ {1}}块)。 if
继续执行条件的pid1
部分,并在完成之前生成else
。 pid4
是唯一的把戏:它在pid2
处再次产生,因为这是执行开始的地方。
答案:
共创建6个进程(
pid3
和5个子进程)