我正在尝试使用 python subprocess.Popen() 调用与子进程交谈。在我的真实代码中,我正在实现一种 IPC,所以我想写入一些数据、读取响应、写入更多数据、读取响应等等。因此,我不能使用 Popen.communicate(),否则它适用于简单的情况。
这段代码显示了我的问题。它甚至从来没有得到第一个响应,挂在第一个“阅读结果”上。为什么?我怎样才能使这项工作如我所料?
import subprocess
p = subprocess.Popen(["sed", 's/a/x/g'],
stdout = subprocess.PIPE,
stdin = subprocess.PIPE)
p.stdin.write("abc\n")
print "Reading result:"
print p.stdout.readline()
p.stdin.write("cat\n")
print "Reading result:"
print p.stdout.readline()