如果我在文件this_script.py中有这样的代码:
import subprocess
subprocess.Popen(["python", "another_script.py"])
我打电话
python this_script.py
并在进程运行时终止进程,是否会终止子进程?
编辑:我对此进行了测试,如果this_script被终止,则子进程继续运行。有没有办法确保后台进程在主Python进程发生时终止?
答案 0 :(得分:2)
是的,您可以抓住KeyboardInterrupt
和SystemExit
,并确保kill
子流程。
from subprocess import Popen
try:
p = Popen(args)
p.wait() # wait for the process to finish
except KeyboardInterrupt, SystemExit:
p.kill()
raise