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