Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python subprocess.Popen使用信号终止后返回代码_Python_Python 2.7_Subprocess_Popen_Exit Code - Fatal编程技术网

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,这只是个例子。感谢您的回答!因此,如果程序处理信号并手动退出,则意味着它没有被信号终止?正确,从操作系统的角度来看,信号已被处理,程序决定自行退出。