如何在Python中使用子进程监控stdout?

0 投票
1 回答
1518 浏览
提问于 2025-04-16 05:03

我有一个在Linux上运行的应用程序,它可以通过命令行与用户互动,接受输入的命令。我写了一个包装器,利用子进程来访问这个应用程序的输入,即使它在后台运行。现在我可以用p.stdin.write(command)来发送命令给它,但我该如何监控它的反馈呢?

1 个回答

1

p.stdout 读取内容可以获取这个进程的输出。

根据这个进程的具体操作,你需要小心,确保在 pstdin 被阻塞时,不要让 p.stdout 也被阻塞。如果你确定每次写入时它都会输出一行内容,你可以像下面这样在循环中交替进行:

while still_going:
    p.stdin.write('blah\n')
    print p.stdout.readline()

不过,如果输出比较不规律,你可能需要看看 select 模块,这样可以更灵活地在读取和写入之间切换。

撰写回答