我正在使用python的子进程模块通过stdin和stdout管道与程序进行交互 . 如果我在stdout上调用subprocesses readline(),它会挂起,因为它正在等待换行符 .
如何读取子流程实例的stdout管道中的所有字符?如果重要的话,我在Linux上运行 .
其他人似乎有同样的问题,你可以看到相关的讨论here .
如果您在Linux上运行,则可以使用select等待进程'stdout上的输入 . 或者,您可以使用进程'stdout的模式更改为非阻塞模式
import fcntl, os fcntl.fcntl(your_process.stdout, fcntl.F_SETFL, os.O_NONBLOCK)
之后,您可以使用read()循环,直到遇到换行符(如果您希望一次处理一行输出) .
您应该使用read()对一组字符进行循环 .
2 回答
其他人似乎有同样的问题,你可以看到相关的讨论here .
如果您在Linux上运行,则可以使用select等待进程'stdout上的输入 . 或者,您可以使用进程'stdout的模式更改为非阻塞模式
之后,您可以使用read()循环,直到遇到换行符(如果您希望一次处理一行输出) .
您应该使用read()对一组字符进行循环 .