Python:用 glib 监控子进程输出?

Posted

技术标签:

【中文标题】Python:用 glib 监控子进程输出?【英文标题】:Python: monitor subprocess output with glib? 【发布时间】:2022-01-04 13:48:11 【问题描述】:

到目前为止,我已经使用以下方法来捕获和处理子进程的输出:

    process = subprocess.Popen(<some-command>, shell=True, stderr = subprocess.PIPE)

    while True: 
        output = str(process.stderr.readline())
        if process.poll() is not None:
            break
        if output:
            if '<some-output>' in output:
                print('<something>')
            elif'<some-other-output>'in output:
                print('something-else')

但是,我现在需要在程序执行其他操作时在后台监视输出。 这个程序是围绕 Glib Mainloop 构建的。

我尝试将它添加到 Glib Idle,但这似乎不起作用。

任何建议将不胜感激!

【问题讨论】:

【参考方案1】:

Python 标准库中的 I/O 操作不能很好地与 GLib 的主循环和 I/O 操作集成。在这种情况下,我建议使用 GLib.Subprocess 而不是 Python 模块。

【讨论】:

以上是关于Python:用 glib 监控子进程输出?的主要内容,如果未能解决你的问题,请参考以下文章

Python、子进程、管道和选择

python subprocess模块 监控子进程的2种方式 忙等待和立即返回同时设置子进程超时

supervisor安装及其配置

Python:如何写入子进程的标准输入并实时读取其输出

检查 python 中正在运行的子进程的标准输出

python子进程模块的动态输出