Python subprocess.Popen使用信号终止后返回代码
考虑以下代码:Python subprocess.Popen使用信号终止后返回代码,python,python-2.7,subprocess,popen,exit-code,Python,Python 2.7,Subprocess,Popen,Exit Code,考虑以下代码: SIGNAL = 123 proc = subprocess.Popen("longrunning") proc.send_signal(SIGNAL) 现在,我想要的是使用exit()获取从代码返回的退出代码 不幸的是,在Python中,我只得到进程停止时使用的信号号: >>> proc.returncode == -SIGNAL True 试试这个: proc = subprocess.call(["ls", "-alh"], stdout=subpro
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,但我发现它的使用没有那么复杂
来源:这两者是相互排斥的。如果您的进程由于收到信号而终止,它将没有机会使用
exit()
生成返回代码
有关底层系统调用机制的解释,请参见
man 2 waitpid
。什么操作系统支持signal 123?@stark nevermind,这只是个例子。感谢您的回答!因此,如果程序处理信号并手动退出,则意味着它没有被信号终止?正确,从操作系统的角度来看,信号已被处理,程序决定自行退出。