UNIX进程:fork()和wait()

时间:2012-01-13 17:38:55

标签: unix fork wait waitpid

这是我在fork()以及将要发生的相应wait()的问题:

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

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

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

2 个答案:

答案 0 :(得分:2)

如果我正确地按照这个问题,你想要这样的东西:

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

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

mainwait(2)左右)的Linux手册页中有一个非常好的细分

答案 1 :(得分:1)

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

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