python - 如何停止/终止Python脚本的运行? (再次)

标签 python python-3.x

上下文:

我有一个正在运行的 python 脚本。它在循环中包含许多 os.system("./executableNane") 调用。

如果我按 ctrl + C,它只会停止当前 ./executableNane 的执行并传递到下一个。

问题:

如何停止整个脚本的执行,而不仅仅是当前调用的可执行文件的执行?

请注意,我已仔细阅读问题/答案 here但即使使用kill,我也可以杀死可执行文件executableNane,但不能杀死整个脚本(我无法使用top找到它)。

我必须停止脚本(无需重新启动系统)的唯一方法是继续循环按 ctrl + C,直到所有测试完成。

最佳答案

您可以使用subprocesssignal 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/

相关文章:

python-3.x - "installing"开泰结构Python

python-3.x - Pyinstaller 可执行文件失败并出现 pkg_resources.DistributionNotFound 错误

python - 在 nvidia jetson tx2 上安装 tensorflow 的问题

python - django 在模板中显示上下文数据而不通过 url 调用 View

python - 为什么Python中的类对象可以继承私有(private)函数

python - 如果它们为 None,则调用不带可选参数的函数

python-3.x - 如何使用 Python 绘制具有边际密度图的散点图?

python - 使用自定义函数时,Pandas apply/map 在某些行不起作用

python - 连接中断 : IncompleteRead(0 bytes read) when sending request to Django on Heroku

python - 向 XML 文件添加内嵌注释