2

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

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

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

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

4

2 回答 2

2

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

  • main来电function
  • function调用fork创建子/人,并在父进程中返回
  • main后来拜访wait孩子/ren

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

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

于 2012-01-13T17:58:01.087 回答
1

是的,main 可以等待在子功能中分叉的孩子。wait() 等待任何子进程终止。

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

于 2012-01-13T17:56:42.223 回答