上下文:
我有一个正在运行的 python 脚本。它在循环中包含许多 os.system("./executableNane")
调用。
如果我按 ctrl + C,它只会停止当前 ./executableNane
的执行并传递到下一个。
问题:
如何停止整个脚本的执行,而不仅仅是当前调用的可执行文件的执行?
请注意,我已仔细阅读问题/答案 here但即使使用kill
,我也可以杀死可执行文件executableNane,但不能杀死整个脚本(我无法使用top
找到它)。
我必须停止脚本(无需重新启动系统)的唯一方法是继续循环按 ctrl + C,直到所有测试完成。
最佳答案
您可以使用subprocess和 signal handlers去做这个。您还可以使用 subprocess
通过 subprocess.PIPE
接收和发送信息,您可以在文档中阅读更多相关信息。
以下应该是您想要执行的操作的基本示例:
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.")
关于python - 如何停止/终止Python脚本的运行? (再次),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59379272/