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

问题描述

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

解决方法

exit_code() 的文档说明:

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

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

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

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