如何读取当前在subprocess.stdoutpipe道中的所有内容,然后返回?

我使用python的subprocess模块通过stdin和stdoutpipe道与程序进行交互。 如果我在stdout上调用subprocessreadline(),它会挂起,因为它正在等待换行符。

如何读取子stream程实例的标准输出pipe道中的所有字符? 如果有问题,我正在Linux上运行。

Solutions Collecting From Web of "如何读取当前在subprocess.stdoutpipe道中的所有内容,然后返回?"

其他人似乎也有同样的问题,你可以在这里看到相关的讨论。

如果你正在Linux上运行,你可以使用select来等待进程的stdout输入。 或者,您可以使用以下过程将stdout模式更改为非阻塞模式

import fcntl, os fcntl.fcntl(your_process.stdout, fcntl.F_SETFL, os.O_NONBLOCK) 

之后你可以循环使用read()直到遇到一个换行符(如果你想一次处理输出一行)。

你应该循环使用read()对一定数量的字符。