使用pygtk在python中运行多个进程并捕获输出

使用pygtk在python中运行多个进程并捕获输出,python,Python,我想编写一个简单的应用程序,运行多个程序,并在多个终端(样式)窗口中显示它们的输出。此外,我希望能够读取这些进程的stdout/stderr,并在输出中搜索关键字 我尝试了用python实现这两种方法,第一种使用subprocess.Popen,第二种使用vte(PythonVTE) 我只让波本在投票的情况下工作。我必须经常检查进程是否有要读取的数据,读取数据,然后将其发送到我的文本区。有人建议改用gobject.io_add_watch(),但每当我尝试第二次调用io_add_watch时,我

我想编写一个简单的应用程序,运行多个程序,并在多个终端(样式)窗口中显示它们的输出。此外,我希望能够读取这些进程的stdout/stderr,并在输出中搜索关键字

我尝试了用python实现这两种方法,第一种使用subprocess.Popen,第二种使用vte(PythonVTE)

我只让波本在投票的情况下工作。我必须经常检查进程是否有要读取的数据,读取数据,然后将其发送到我的文本区。有人建议改用gobject.io_add_watch(),但每当我尝试第二次调用io_add_watch时,我的程序就会挂起,就像一次只能处理一个文件描述符一样

vte工作得很好,但我还没有找到一种可靠的方法来捕获输出。当光标移动时,您可以得到一个回调,然后使用/get_text()进行屏幕刮取,但我已经遇到过这样的情况:我正在查看的这些程序一次生成了关于tty的淫秽内容,然后它就离开了屏幕。似乎没有包含要添加到窗口的新文本的回调


有什么想法吗?

我使用。对于每个进程,我实际上都会将stdout和stderr重定向到一个临时文件,然后定期检查该文件的更新,并将输出转储到一个临时文件中

不使用流程管道的原因是,流程本身是不稳定的,并且容易发生故障。发生这种情况时,我有时会在最后一次读取和SEGFULT之间丢失数据(这是确定SEGFULT原因最需要的数据)


事实证明,有时候我想保存特定流程的输出,所以这种方法对我来说很有效。

如果你同意伊库克的建议,我会遇到一个相关的问题。这对我来说非常有效(我正在查看日志文件以了解更改)。

您希望使用它来监视子流程中的管道。这比轮询好。

重复:重复: