1

我有一个 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

问题是当我打开评论时。我尝试测试标准输入中的这些信息是否可以被两个进程读取。但是,当我执行它时,我的 python 程序没有响应。它只是挂在那里。我猜原因是两个子进程为读取标准输入而战。我怎样才能控制他们和谐地工作?

问候。

更新

我将代码更改为此,它可以工作:

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]

我试图说些什么,但我只是对发生的事情有所感觉。所以,我只是把如何在我的代码中解决这个问题而不做更多的分析。对不起。

4

0 回答 0