Python 子进程 PIPE 阻塞

Python subprocess PIPE blocking

子进程将输出几个字符,我想通过标准输入发送一些响应。输出的长度是可以预测的,所以我写了这样的代码:

p = Popen("myproc", shell = True, stdin = PIPE, stdout = PIPE)
p.stdout.read(1)

然而,p.stdout.read(1) 不会 return 即使进程已经输出了超过一个字符。如何让它在读取到预期长度的字节序列后停止阻塞?

myproc 可以在重定向标准输出时使用块缓冲模式,即您的父级 Python 在刷新子级中的相应缓冲区之前不会看到任何内容。参见