Python subprocess.Popen return 用信号杀死后的代码

Python subprocess.Popen return code after killing with signal

考虑以下代码:

SIGNAL = 123
proc = subprocess.Popen("longrunning")
proc.send_signal(SIGNAL)

现在我想要的是获取从带有exit()的代码中返回的退出代码。

不幸的是,在 Python 中我只得到进程停止的信号编号:

>>> proc.returncode == -SIGNAL
True

试试这个:

proc = subprocess.call(["ls", "-alh"], stdout=subprocess.PIPE)
print proc
0

subprocess.call 最终调用了 Popen,但我发现它使用起来稍微简单一些。

来源:https://docs.python.org/2/library/subprocess.html

两者是互斥的。如果您的进程因收到信号而终止,它将没有机会生成带有 exit().

的 return 代码

有关底层系统调用机制的说明,请参见man 2 waitpid