python – 在KeyboardInterrupt之后杀死subprocess.call

python – 在KeyboardInterrupt之后杀死subprocess.call,第1张

概述当我得到一个键盘中断(ctrl-c)时,我需要在 Python中停止使用subprocess.call创建的进程 问题是p在完成执行之前没有分配给它的值 p = subprocess.call(cmd) 所以我不能使用os.kill来杀死它.另外,不能使用shell = True因为原因. 我想做的是: try: p = subprocess.call(cmd)except Keyboard 当我得到一个键盘中断(ctrl-c)时,我需要在 Python中停止使用subprocess.call创建的进程

问题是p在完成执行之前没有分配给它的值

p = subprocess.call(cmd)

所以我不能使用os.kill来杀死它.另外,不能使用shell = True因为原因.

我想做的是:

try:  p = subprocess.call(cmd)except KeyboardInterrupt:  os.kill(p.pID,signal.SIGTERM)  sys.exit('exited after ctrl-c')
解决方法@H_404_27@ > p只是一个整数(.returncode),因此没有.pID属性(运行代码,按CTRL C,看看会发生什么)
>在POSIX上,SIGINT被发送到终端的前台进程组,因此应该杀死子进程而不需要您执行任何其他 *** 作,请参阅 How CTRL+C works
您也可以检查孩子是否在windows上终止.

如果孩子没有在KeyboardInterrupt上被杀,那么你可以手动执行:subprocess.call() is just Popen().wait() – 你可以自己调用它:

p = subprocess.Popen(cmd)try:    p.wait()except KeyboardInterrupt:    try:       p.terminate()    except OSError:       pass    p.wait()
总结

以上是内存溢出为你收集整理的python – 在KeyboardInterrupt之后杀死subprocess.call全部内容,希望文章能够帮你解决python – 在KeyboardInterrupt之后杀死subprocess.call所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存