parent进程中等待和不等待如何选择?

How to choose between waiting and not waiting in the parent process?

假设我有两个函数 x & y 并且这两个函数都在调用另一个函数 z.

我在这个函数中 fork z

我要做的是下面的

  1. 如果我的调用函数是x。等待 child 在 parent 进程

  2. else 如果调用函数是y。不要等待 child,(好像 同时是运行)。

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

或者我必须制作两个单独的函数 z1 & z2

z1 我分叉并等待,在 z2 我分叉但不等待。

我想用 c

您可以将参数传递给 z,指示 z 是否应该等待 child。或者,您可以使 z return 成为 child 的进程 ID 而无需等待它。然后你可以手动调用 x 中的 waitpid 来显式等待 z:

分叉的进程
waitpid(z(), NULL, 0);

当然,你也需要做错误处理。