【问题标题】:How to choose between waiting and not waiting in the parent process?在父进程中如何选择等待和不等待?
【发布时间】:2016-02-07 20:14:59
【问题描述】:

假设我有两个函数 xy 并且这两个函数都在调用另一个函数 z

我 fork 这个函数 z

我想做的是以下。

  1. 如果我的调用函数是 x。等待孩子完成 父进程

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

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

还是我必须制作两个单独的函数 z1 & z2

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

我想在 c 中做到这一点

【问题讨论】:

  • 将“等待”布尔值传递给 z 有什么问题?

标签: c process fork


【解决方案1】:

您可以将参数传递给z,指示z 是否应该等待孩子。或者,您可以让 z 返回子进程 ID 而无需等待。然后你可以在x中手动调用waitpid来显式等待z分叉的进程:

waitpid(z(), NULL, 0);

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

【讨论】:

  • 当我选择不等待时如何终止程序。它只是在最后冻结。我怎么能终止它
  • @Pro 我需要更多信息来回答这个问题。你能发布出现这个问题的代码吗?如果您为此提出一个新问题,这可能是最好的。
  • 基本上我在包含来自文件的许多命令的行上执行 execvp。我正在尝试一起运行所有命令。以便结果可以混合。一切正常,只是完成后它不会在终端中退出程序
  • @Pro 对不起,不知道。给我看代码(在一个单独的问题中)或做一个最小的例子,然后我可以帮助你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多