gpt4 book ai didi

python - 从 python 启动多个二进制文件并监视它们的状态

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:16 25 4
gpt4 key购买 nike

我有几个可执行的 C++ 二进制文件,我需要从 python 脚本启动。根据这些可执行文件的状态,脚本将执行一些操作。比方说,我启动了 4 个独立的程序,它们都在运行。我的脚本需要确保这 4 个程序正常运行并且没有崩溃。如果是这样,脚本将发送一封电子邮件,其中包含“Process XYZ failed at this time”行中的信息

我在 Linux 机器上。我尝试了子流程技巧的各种组合,但没有成功。我想我可能需要利用线程并在它启动的进程上保持“看门狗”。理想情况下,脚本需要在单独的终端窗口中启动这些程序,因此总共有 4 个终端窗口。以下是我的尝试:

import subprocess as sp
clear = sp.call('clear')

try:
comm = sp.Popen(['xterm', '-e', '~/stuff/comm'])
while sp.Pipe == -1:
...do stuff
except sp.PIPE == -2:
...send email.

上述方法的问题是,如果我终止脚本启动的程序,脚本不会意识到它已被终止。

啊,脑子坏了,我稍后会尝试添加更多连贯的信息,但如果有人已经知道我正在努力完成什么,我将不胜感激。

最佳答案

因为你在 Linux 机器上,你可以使用信号,特别是 SIGCHLD。当其任何子进程死亡时,此信号将发送到父进程。默认操作是忽略它,所以你需要安装一个处理程序来处理它:

import os
import signal

def sigchld(sig, frame):
(pid, r) = os.wait()
print pid, "exited with", ("signal %d" % (r & 0x7f) if os.WIFSIGNALED(r) else "exit code %d" % (r >> 8))

signal.signal(signal.SIGCHLD, sigchld)
# run your subprocesses here

关于python - 从 python 启动多个二进制文件并监视它们的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com