如何在Python中使用子进程监控stdout?
我有一个在Linux上运行的应用程序,它可以通过命令行与用户互动,接受输入的命令。我写了一个包装器,利用子进程来访问这个应用程序的输入,即使它在后台运行。现在我可以用p.stdin.write(command)来发送命令给它,但我该如何监控它的反馈呢?
1 个回答
1
从 p.stdout
读取内容可以获取这个进程的输出。
根据这个进程的具体操作,你需要小心,确保在 p
的 stdin
被阻塞时,不要让 p.stdout
也被阻塞。如果你确定每次写入时它都会输出一行内容,你可以像下面这样在循环中交替进行:
while still_going:
p.stdin.write('blah\n')
print p.stdout.readline()
不过,如果输出比较不规律,你可能需要看看 select
模块,这样可以更灵活地在读取和写入之间切换。