2024-06-01 00:19:29 发布
网友
我正在编写一个python程序来启动一个子进程(使用Popen)。 我正在读取子进程的stdout,进行一些筛选,并向 主要工艺标准。在
当我终止主进程(cntl-C)时,子进程继续运行。 我如何也终止子进程?子流程可能会运行很长时间。在
上下文: 我一次只启动一个子进程,过滤它的标准输出。 用户可能决定中断以尝试其他操作。在
我是python新手,而且我使用windows,所以请温柔一点。在
Windows没有信号,所以你不能使用信号模块。但是,当按下Ctrl-C时,您仍然可以捕捉到键盘中断异常。在
这样的事情应该能让你振作起来:
import subprocess try: child = subprocess.Popen(blah) child.wait() except KeyboardInterrupt: child.terminate()
在子流程.Popen终止对象的方法不同。在
在信号。信号允许您安装信号处理程序,在其中可以调用子级的kill方法。在
您可以使用pythonatexit模块。在
atexit
例如:
import atexit def killSubprocess(): mySubprocess.kill() atexit.register(killSubprocess)
Windows没有信号,所以你不能使用信号模块。但是,当按下Ctrl-C时,您仍然可以捕捉到键盘中断异常。在
这样的事情应该能让你振作起来:
在子流程.Popen终止对象的方法不同。在
在信号。信号允许您安装信号处理程序,在其中可以调用子级的kill方法。在
您可以使用python
atexit
模块。在例如:
相关问题 更多 >
编程相关推荐