【问题标题】:UNIX processes: fork() and wait()UNIX 进程:fork() 和 wait()
【发布时间】:2012-01-13 17:38:54
【问题描述】:

这是我对fork() 和相应的wait() 的问题:

在我的main() 中,我调用了一个函数,比如说使用fork() 系统调用的function(),但我希望function() 在不等待子进程终止的情况下返回,因此main() 有在终止之前等待他们。

那么,main() 是否可以在另一个名为 my this main() 的函数的主体中 fork()ed 的孩子上调用 wait()

如果是,我是否必须通过变量将孩子的 pid 传递给 main()

【问题讨论】:

    标签: unix fork wait waitpid


    【解决方案1】:

    如果我正确地回答了这个问题,你想要这样的东西:

    • main 致电function
    • function调用fork创建child/ren,并在父进程中返回
    • main 稍后在孩子/ren 上调用 wait

    这很好......名义上,您不必必须将孩子的 PID 传回给main,因为您可以调用wait 来获取任何碰巧存在的子进程;但是,要使用waitidwaitpid,您需要/想要将它们备份到main。您可以在链表或以 NULL 结尾的数组等结构中将 PID 返回到 main,或者创建某种文件范围或全局变量来包含该列表。

    wait(2)man 2 wait 左右)的 Linux 手册页中有一个很好的细分

    【讨论】:

      【解决方案2】:

      是的,main 可以等待子函数中 fork 的子函数。 wait() 等待任何子进程终止。

      你仍然希望将 fork() 的返回值传递给主函数,因为你需要它来决定你是子进程还是父进程。

      【讨论】:

        猜你喜欢
        • 2011-02-12
        • 2020-06-18
        • 2014-04-21
        • 2015-03-30
        • 1970-01-01
        • 1970-01-01
        • 2010-12-12
        • 2014-02-14
        • 2015-11-08
        相关资源
        最近更新 更多