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

时间:2013-06-26 20:48:54

标签: linux process operating-system fork wait

考虑de以下代码片段:

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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

(5)另外,要注意每个进程独立运行 - 第一个孩子可能在父进行一次之前绕过循环几次,反之亦然。

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

尝试Tiny C.