我试图让两个进程使用管道进行通信。 我这样做是在父进程:通过管道使python程序“聊天”
process = subprocess.Popen(test, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
process.stdin.write("4\n");
output = process.stdout.read()
print output
,并在子进程:
inp = raw_input()
integer = int(inp)
print integer**2
while(True):
pass
我希望父进程打印16 ......不幸的是,它仍然悬而不打印任何东西。用5秒的休眠时间代替无限循环使父进程空闲5秒,并在该打印16之后空闲。 这表明父进程在其终止执行后仅从子进程获得输出。
我想知道在程序结束之前是否有可能获得输入。 我的想法是通过此管道传递信息,获取输入,处理它并将结果输出到管道中,以便其他人可以继续处理。
任何帮助? 谢谢,
曼努埃尔
你试过刷新流时,你写的' “4 \ n” '? – 2010-07-16 20:00:25
是的,那不是问题。子进程实际上得到了4,我看到它,因为在阅读完输入后,我将它写入常规文件,然后进入无限循环。父进程是在read()部分中阻塞的进程。 – 2010-07-16 20:20:36
出于好奇,为什么不在子进程中使用'sys.stdin.readline()'? – 2010-07-16 20:34:27