背景: 我有一个运行的python脚本。它包含许多在循环中调用的os.system("./executableNane")。 如果我按下ctrl + C,它就会停止当前./executableNane的执行并传递到下一个。 问题: 如何停止执行整个脚本,而不只是执行当前可执行的调用? 请注意,我已经仔细阅读了这里的问题/答案,但即使杀死,我可以杀死可执行的executableNane,但不是整个脚本(我无法找到使用top)。 我必须停止脚本的唯一方法(不重新启动系统)是在一个循环中继续按ctrl + C,直到所有测试完成。 问题来源StackOverflow 地址:/questions/59379272/how-to-stop-terminate-a-python-script-from-running-once-again
您可以使用子进程和信号处理程序来完成此任务。您还可以使用子流程通过子流程接收和发送信息。管道,您可以在文档中了解更多。 以下应该是一个基本的例子,你想做什么:
import subprocess
import signal
import sys
def signal_handler(sig, frame):
print("You pressed Ctrl+C, stopping.")
print("Signal: {}".format(sig))
print("Frame: {}".format(frame))
sys.exit(123)
# Set up signal handler
signal.signal(signal.SIGINT, signal_handler)
print("Starting.")
while True:
cmd = ['sleep', '10']
p = subprocess.Popen(cmd)
p.wait()
if p.returncode != 0:
print("Command failed.")
else:
print("Command worked.")
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。