杀死python进程时杀死子进程?
问题内容:
我正在编写一个启动子进程的python程序(使用Popen)。我正在读取子流程的stdout,进行一些过滤,然后写入主流程的stdout。
当我杀死主进程(cntl-C)时,子进程将继续运行。我如何也杀死子进程?子进程可能需要长时间运行。
上下文:一次仅启动一个子进程,正在过滤其标准输出。用户可能会决定中断以尝试其他操作。
我是python的新手,并且正在使用Windows,因此请保持柔和。
问题答案:
Windows没有信号,因此您不能使用信号模块。但是,当按Ctrl-C时,您仍然可以捕获KeyboardInterrupt异常。
这样的事情应该可以帮助您:
import subprocess
try:
child = subprocess.Popen(blah)
child.wait()
except KeyboardInterrupt:
child.terminate()