终止进程的Boost进程退出代码

时间:2021-02-03 12:16:21

标签: c++ boost boost-process

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

1 个答案:

答案 0 :(得分:1)

exit_code() 的文档说明:

<块引用>

返回值没有任何意义,如果子进程没有被等待或者它被终止

因此,如果进程是 exit_code()d,则似乎不应该调用 terminate

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

Boost.Process 在 1.71 版左右发生了一些变化,这可以解释行为上的差异(例如,将 SIGTERM 更改为 SIGKILL),但根据 exit_code 文档,永远无法调用它与 terminate 组合。