我有一个主python(testmain.py)脚本,它使用subprocess.Popen命令执行另一个python脚本(test.py)。当我按Ctrl-C时,我希望孩子退出退出代码2,然后父亲显示退出代码,然后终止。
我在父脚本和子脚本中都有信号处理程序。
testmain.py
def signal_handler(signal, frame):
print "outer signal handler"
exit(2)
signal.signal(signal.SIGINT, signal_handler)
def execute()
proc=subprocess.Popen("python test.py",shell=True)
streamdata=proc.communicate()[0]
rc=proc.returncode
print "return code:",rc
execute()
test.py
def signal_handler(signal, frame):
print "exiting: inner function"
exit(2)
signal.signal(signal.SIGINT, signal_handler)
我检查Delegate signal handling to a child process in python这与我的问题类似,但在这种情况下,父母继续执行,我不想要。
我想:1.exit test.py with exit(2)2.print退出代码在testmain.py 3.exit test.py中退出(2)
有人可以提供建议吗? 谢谢。
更新:仅处理子(test.py)中的信号并检查父(testmain.py)中的返回代码将执行我想要的操作。
if rc==2:
print "child was terminated"
exit(2)
但我想知道是否有一种干净的方法可以使用信号处理。