如何在父进程中等待和不等待?

时间:2016-02-07 20:15:00

标签: c process fork

假设我有两个功能 x & y ,这两个函数都在调用另一个函数 z

我在这个函数 z 中分叉。

我想做的是以下内容。

  1. 如果我的通话功能是 x 。等孩子完成了 父流程

  2. else如果调用函数是 y 。不要等孩子,(好像它 正在同时运行。

  3. 我怎样才能实现这种行为?如果可能的话?

    或者我必须做两个单独的功能 z1 &的 Z2

    z1 的地方,叉子等待,在 z2 我叉,我不等。

    我想在c

    中这样做

1 个答案:

答案 0 :(得分:1)

您可以将参数传递给z,指示z是否应该等待孩子。或者,您可以使z返回子进程ID,而无需等待它。然后,您可以在waitpid中手动呼叫x,以明确等待z分叉的流程:

waitpid(z(), NULL, 0);

当然,您也需要进行错误处理。