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
收获碰巧存在的任何子进程;但是,要使用waitid
或waitpid
,您需要/希望将它们提供回main
。您可以将PID返回到main
的结构,如链接列表或NULL结尾的数组,或创建某种文件范围或全局变量来包含列表。
有在Linux手册页一个不错的细目wait(2)
(man 2 wait
左右)