子进程将输出几个字符,我想通过stdin发送一些响应。输出的长度是可预测的,所以我写了这样的代码:
p = Popen("myproc", shell = True, stdin = PIPE, stdout = PIPE)
p.stdout.read(1)
但是,即使进程输出的字符多于一个字符,p.stdout.read(1)
也不会返回。如何在读取预期长度的字节序列后使其停止阻塞?
答案 0 :(得分:1)
myproc
可以使用块缓冲模式,即,在刷新子对应的缓冲区之前,您的父Python不会看到任何内容。请参阅several ways to workaround it in this answer (and follow the corresponding links there)。