python – 在KeyboardInterrupt之后杀死subprocess.call
发布时间:2020-12-20 11:46:44 所属栏目:Python 来源:网络整理
导读:当我得到一个键盘中断(ctrl-c)时,我需要在 Python中停止使用subprocess.call创建的进程 问题是p在完成执行之前没有分配给它的值 p = subprocess.call(cmd) 所以我不能使用os.kill来杀死它.另外,不能使用shell = True因为原因. 我想做的是: try: p = subproc
当我得到一个键盘中断(ctrl-c)时,我需要在
Python中停止使用subprocess.call创建的进程
问题是p在完成执行之前没有分配给它的值
所以我不能使用os.kill来杀死它.另外,不能使用shell = True因为原因. 我想做的是: try: p = subprocess.call(cmd) except KeyboardInterrupt: os.kill(p.pid,signal.SIGTERM) sys.exit('exited after ctrl-c') 解决方法
> p只是一个整数(.returncode),因此没有.pid属性(运行代码,按CTRL C,看看会发生什么)
>在POSIX上,SIGINT被发送到终端的前台进程组,因此应该杀死子进程而不需要您执行任何其他操作,请参阅 How CTRL+C works 您也可以检查孩子是否在Windows上终止. 如果孩子没有在KeyboardInterrupt上被杀,那么你可以手动执行: p = subprocess.Popen(cmd) try: p.wait() except KeyboardInterrupt: try: p.terminate() except OSError: pass p.wait() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |