假设我有两个函数 x 和 y,这两个函数都在调用另一个函数 z。
我 fork 了这个函数 z。
我想做的是以下内容。
如果我的调用函数是x。等待 child 完成 父进程
else 如果调用函数是y。不要等待 child ,(好像 同时运行)。
我怎样才能实现这样的行为,如果可能的话?
还是我必须制作两个单独的函数 z1 和 z2
在 z1 我 fork 并等待,在 z2 我 fork 但不等待。
我想用c来做
最佳答案
您可以将一个参数传递给 z
以指示 z
是否应该等待 child 。或者,您可以让 z
返回子进程的 ID 而无需等待它。然后你可以手动调用 x
中的 waitpid
来显式等待 z
fork 的进程:
waitpid(z(), NULL, 0);
当然,您还需要进行错误处理。
关于c - 在父进程中如何选择等待和不等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35258555/