【问题标题】:What happens if i use wait() in child process?如果我在子进程中使用 wait() 会发生什么?
【发布时间】: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


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • (1) 一种; (2) 我没有办法试试看:( (3) 谢谢
    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    相关资源
    最近更新 更多