【发布时间】:2020-09-07 05:15:00
【问题描述】:
import subprocess as sp
p = sp.Popen("/bin/cat", stdin=sp.PIPE, stdout=sp.PIPE)
p.stdin.write(b"foobaz!\n")
p.stdin.close()
print(p.stdout.readline())
此代码按预期工作(cat 回显标准输入,我们可以读取标准输出)
如果我们注释掉p.stdin.close(),.readline() 会无限期地阻塞。这与调用 .read(1) 的行为相同。有没有办法在不发送 EOF 到标准输入的情况下使用 subprocess 模块读取?
我知道还有其他库可以解决我的问题,我也在研究它们。对于这个问题,我只是好奇subprocess是否有这个能力,以及如何通过subprocess实现。
【问题讨论】:
标签: python subprocess pipe