问题描述
终止进程的返回码应该是什么?我运行 "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
组合。