UNIX进程:fork()和wait()的

问题描述:

这是我在fork()和各自wait()将要发生的问题:UNIX进程:fork()和wait()的

在我main(),我调用一个函数,让我们说function()使用该fork()系统调用,但我希望function()返回而不必等待孩子终止,因此main()必须在终止之前等待它们。

那么,main()是否有可能在fork()编辑过的另一个函数body中调用wait()这个main()

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

是的,主要可以等待子功能派生的孩子。 wait()等待任何孩子终止。

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

如果我正确地遵循了问题,你想有这样的事情:

  • main电话function
  • function电话fork创建子/仁,并返回在父进程
  • main后来致电wait对子/ ren

This很好...名义上,你不需要必须将子(PID)的PID传回main,因为你可以直接调用wait收获碰巧存在的任何子进程;但是,要使用waitidwaitpid,您需要/希望将它们提供回main。您可以将PID返回到main的结构,如链接列表或NULL结尾的数组,或创建某种文件范围或全局变量来包含列表。

有在Linux手册页一个不错的细目wait(2)man 2 wait左右)