当python进程被终止时终止子进程?

2024-06-01 00:19:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python程序来启动一个子进程(使用Popen)。 我正在读取子进程的stdout,进行一些筛选,并向 主要工艺标准。在

当我终止主进程(cntl-C)时,子进程继续运行。 我如何也终止子进程?子流程可能会运行很长时间。在

上下文: 我一次只启动一个子进程,过滤它的标准输出。 用户可能决定中断以尝试其他操作。在

我是python新手,而且我使用windows,所以请温柔一点。在


Tags: 用户程序标准进程windowsstdout流程popen
3条回答

Windows没有信号,所以你不能使用信号模块。但是,当按下Ctrl-C时,您仍然可以捕捉到键盘中断异常。在

这样的事情应该能让你振作起来:

import subprocess

try:
    child = subprocess.Popen(blah)
    child.wait() 

except KeyboardInterrupt:
    child.terminate()

在子流程.Popen终止对象的方法不同。在

在信号。信号允许您安装信号处理程序,在其中可以调用子级的kill方法。在

您可以使用pythonatexit模块。在

例如:

import atexit

def killSubprocess():
    mySubprocess.kill()

atexit.register(killSubprocess)

相关问题 更多 >