如果我在子进程中使用 wait() 会发生什么?

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)

结果会怎样?会创建多少新流程?

AMA*_*nc. 5

(1) 这是家庭作业吗?- 询问有关家庭作业的问题是可以的,但让别人为您做家庭作业则不行。

(2) 你为什么不尝试一下呢?

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

(4) 请注意,每个子进程在 wait(0); 之后将继续循环 - 即父进程将 fork,子进程将打印 0;第二次,两个进程都会分叉,并且它们的子进程将打印 1;第三次,所有四个进程都将分叉,并且它们的四个子进程将打印 2,依此类推。

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

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