我有一个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]
我试着说些什么,但我能感觉到发生了什么。所以,我只是说如何在没有更多分析的情况下解决代码中的问题。原谅我。