我需要启动外部过程,是通过通过stdin和stdout来回发送消息进行控制。 使用subprocess.Popen我能够启动这一进程,但我不能,因为我需要控制通过stdin执行。
什么我试图完成的流程是:
- 启动外部进程
- 迭代对于一些数量的步骤
- 告诉外部进程通过写一个新行字符到它的标准输入,完成一个处理步骤
- 等待外部进程通过写一个新行字符,以表示它已经完成了一步到它的标准输出
- 关闭外部进程的标准输入以指示执行已完成外部进程。
我想出了迄今为止以下几点:
process=subprocess.Popen([PathToProcess],stdin=subprocess.PIPE,stdout=subprocess.PIPE);
for i in xrange(StepsToComplete):
print "Forcing step # %s"%i
process.communicate(input='\n')
当我运行上面的代码中的“\ n”是不是传送到外部的过程,我永远不会超越步骤#0。 在process.communicate码块(),并且不进一步进行任何。 我使用不当通信()方法?
此外,我将如何实现了“等待外部进程写入新行”片的功能?