【发布时间】:2016-06-05 01:37:56
【问题描述】:
子进程会输出几个字符,我想通过标准输入发送一些响应。输出的长度是可以预测的,所以我写了这样的代码:
p = Popen("myproc", shell = True, stdin = PIPE, stdout = PIPE)
p.stdout.read(1)
但是,即使进程已经输出了多个字符,p.stdout.read(1) 也不会返回。读取预期长度的字节序列后如何使其停止阻塞?
【问题讨论】:
-
如果可以,请使用 select 和 poll。也可以尝试使用
flush()。 -
这很难做到。您最好使用
pexpect以这种方式读取/写入管道。
标签: python process pipe subprocess stdout