这是我在fork()
以及将要发生的相应wait()
的问题:
在我的main()
中,我调用了一个函数,让我们说function()
使用fork()
系统调用,但我想要function()
返回而不等待孩子们终止,因此main()
必须在终止之前等待它们。
那么,main()
是否可以在另一个名为my wait()
的函数的主体中fork()
调用main()
?
如果是,我是否必须通过变量将孩子的pid传递给main()
?
答案 0 :(得分:2)
如果我正确地按照这个问题,你想要这样的东西:
main
来电function
function
调用fork
创建子/ ren,并在父进程中返回main
稍后在child / ren上调用wait
这很好......名义上,你不必必须将子()的PID传递回main
,因为你只需要调用{{1}收获碰巧存在的任何子进程;但是,要使用wait
或waitid
,您需要/希望将其提供回waitpid
。您可以将PID返回到main
结构中的链接列表或以NULL结尾的数组,或者创建某种文件范围或全局变量来包含列表。
main
(wait(2)
左右)的Linux手册页中有一个非常好的细分
答案 1 :(得分:1)
是的,主要可以等待分叉子功能的孩子。 wait()等待任何孩子终止。
您仍然希望将fork()的返回值传递给main函数,因为您将需要它来决定您是子进程还是父进程。