0 linux operating-system fork process wait
考虑以下代码片段:
for(i = 0; i < 5; i++)
if(fork() == 0) {
printf("%d\n", i);
wait(0);
}
Run Code Online (Sandbox Code Playgroud)
结果会怎样?会创建多少新流程?
(1) 这是家庭作业吗?- 询问有关家庭作业的问题是可以的,但让别人为您做家庭作业则不行。
(2) 你为什么不尝试一下呢?
(3) 如果进程本身没有子进程,wait将(立即)返回-1。
(4) 请注意,每个子进程在 wait(0); 之后将继续循环 - 即父进程将 fork,子进程将打印 0;第二次,两个进程都会分叉,并且它们的子进程将打印 1;第三次,所有四个进程都将分叉,并且它们的四个子进程将打印 2,依此类推。
(5) 另外,请注意,每个进程都是独立运行的 - 第一个子进程可能会在父进程执行循环之前多次循环,反之亦然。
如果您有一台计算机可以访问互联网,您就有一台可以尝试的计算机 - 如果您将来要做 C 作业,那么为您的计算机下载一个免费的 C 编译器是非常值得的。尝试 Tiny C: http: //bellard.org/tcc/