当两个子进程从stdin读取时,我的程序没有响应

时间:2012-05-22 08:09:12

标签: python subprocess stdin

我有一个C程序,在运行时需要一些控制信息。这些信息将由我的python程序传递。我首先测试一下,它工作正常。

from subprocess import PIPE
import subprocess

cpro = ['./a_pass','2','8','7']        #2,8,7 are some parameters for init
p1 = subprocess.Popen(cpro,stdout=PIPE, stdin=PIPE)
#p2 = subprocess.Popen(cpro,stdout=PIPE, stdin=PIPE)

f1 = open('bdt.100','r')               #control information
commands = f1.read()

out1 = p1.communicate(commands)[0]     #get the c program output
#out2 = p2.communicate(commands)[0]

print out1
print '--------------'
#print out2

问题在于我打开评论。我尝试测试stdin中的这些信息是否可以被两个进程读取。但是,当我执行它时,我的python程序没有响应。它只是挂在那里。我想原因是两个子进程争夺读取标准输入。如何控制它们和谐地工作?

Bst问候。

更新

我将我的代码更改为此,并且可以正常运行:

p1 = subprocess.Popen(passOne,stdout=PIPE, stdin=PIPE)
out1 = p1.communicate(commands)[0]

p2 = subprocess.Popen(failOne,stdout=PIPE, stdin=PIPE)
out2 = p2.communicate(commands)[0]

我试着说些什么,但我能感觉到发生了什么。所以,我只是说如何在没有更多分析的情况下解决代码中的问题。原谅我。

0 个答案:

没有答案