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