【问题标题】:Boost Process exit code of terminated process终止进程的Boost进程退出代码
【发布时间】:2021-02-03 12:16:21
【问题描述】:

终止进程的返回码应该是什么?我运行"bash -c \"while true; do true; done\"" 并调用terminate。在 boost 1.65 中是 0,现在在 boost 1.71 中是 383

【问题讨论】:

  • terminate 被记录为仅向子进程发出信号,我假设返回码取决于该进程的作用。

标签: c++ boost boost-process


【解决方案1】:

exit_code() 的文档指出:

如果孩子没有被等待或被终止,则返回值没有任何意义

因此,如果进程为terminated,则似乎不应调用exit_code()

在 Linux 上,383 (0x17F) 的“退出代码”表示进程仍在运行。因此,值得尝试wait 让进程在获取其退出代码之前完成。

Boost.Process 在 1.71 版左右的某个地方发生了一些变化,这可以解释行为上的差异(例如,将 SIGTERM 更改为 SIGKILL),但根据 exit_code 文档,将其与terminate.

【讨论】:

  • 有趣,我确实有一个wait 电话。我只是不明白如果进程仍在运行,您如何获得退出代码。一个只是排除另一个对吗?
  • 查看我的更新。 exit_code() 可能只是 waitpid(... WNOHANG) 的包装,它返回退出 status可能包含退出代码。
猜你喜欢
  • 2011-05-19
  • 1970-01-01
  • 2022-07-18
  • 2015-04-11
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 2011-01-28
  • 2022-08-11
相关资源
最近更新 更多