我在C代码中遇到了关于进程的问题,这些进程是用我们的教授给出的fork来计算出它创建的进程的数量的。
pid1 = fork();
if (pid1 != 0) {
pid2 = fork();
pid3 = fork();
}
else {
pid4 = fork();
}
发布于 2019-06-20 03:18:23
运行代码只会有一些帮助(并且不能在考试期间完成!)--更好的做法是绘制一个流程树。规则是每个子进程在产生它的fork
调用之后开始执行,父进程的pid
为非零,子进程的pid
为零。
main
/ | \
pid1 pid2 pid3
/ |
pid4 pid3
我们可以看到main
派生了三个子对象,pid1
、pid2
和pid3
(pid1
是微不足道的,另外两个是在真正的if
块中派生的)。pid1
继续执行conditional的else
部分,并在完成之前生成pid4
。pid2
是唯一的诀窍:它在pid3
处再次产生,因为它的执行是从那里开始的。
答案:
总共创建了6个进程(main
和5个子进程)
https://stackoverflow.com/questions/56674337
复制相似问题