0

考虑以下代码片段:

    for(i = 0; i < 5; i++)
        if(fork() == 0) {
            printf("%d\n", i);
            wait(0);
        }

结果将是什么?将创建多少新流程?

4

1 回答 1

4

(1) 这是家庭作业吗?- 关于家庭作业的问题是可以的,让别人为你做家庭作业是不行的。

(2) 你为什么不试试看呢?

(3) 如果一个进程本身没有子进程,wait会(立即)返回-1。

(4) 警告每个子进程,在wait(0);之后,将继续循环——也就是说,父进程会fork,子进程会打印0;第二轮,两个进程都会分叉,它们的子进程会打印 1;第三轮,所有四个进程都将分叉,它们的四个子进程将打印 2,依此类推。

(5) 另外,请注意每个进程都是独立运行的——第一个子进程可能会在父进程之前循环数次,反之亦然。

如果您有一台可以访问互联网的计算机,那么您就有一台可以尝试的计算机——如果您将来要做 C 功课,那么为您的计算机下载一个免费的 C 编译器是非常值得的。在http://bellard.org/tcc/尝试 Tiny C

于 2013-06-26T20:52:25.243 回答