【发布时间】:2013-06-24 04:32:16
【问题描述】:
考虑下面的代码片段:
for(i = 0; i < 5; i++)
if(fork() == 0) {
printf("%d\n", i);
wait(0);
}
会产生什么结果以及会创建多少新流程?
【问题讨论】:
标签: linux process operating-system fork wait
考虑下面的代码片段:
for(i = 0; i < 5; i++)
if(fork() == 0) {
printf("%d\n", i);
wait(0);
}
会产生什么结果以及会创建多少新流程?
【问题讨论】:
标签: linux process operating-system fork wait
(1) 这是家庭作业吗? - 关于家庭作业的问题可以,但不能让别人帮你做作业。
(2) 你为什么不试试看呢?
(3) 如果一个进程本身没有子进程,wait 将(立即)返回-1。
(4) 请注意,每个子进程在 wait(0); 之后将继续循环 - 即父进程将分叉,子进程将打印 0;第二轮,两个进程都会分叉,它们的子进程会打印 1;第三轮,所有四个进程都将分叉,它们的四个子进程将打印 2,以此类推。
(5) 另外,请注意每个进程都是独立运行的 - 第一个子进程可能会在父进程之前循环数次,反之亦然。
如果您有一台可以访问互联网的计算机,那么您就有一台可以尝试的计算机——如果您将来要做 C 功课,那么为您下载一个免费的 C 编译器是非常值得的计算机。在http://bellard.org/tcc/尝试 Tiny C
【讨论】: