実行時に何らかの制御情報を必要とする 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 のこれらの情報が 2 つのプロセスで読み取れるかどうかをテストしようとしています。しかし、Python プログラムを実行しても応答しません。そこにぶら下がっているだけです。その理由は、標準入力を読み取るための2つのサブプロセスの戦いだと思います。どうすればそれらが調和して機能するように制御できますか?
よろしく。
アップデート
私はこれに私のコードを変更し、それが動作します:
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]
私は何かを言おうとしますが、何が起こったのかについて何かを感じることができます. したがって、これ以上分析せずに、問題を修正する方法をコードに入れただけです。私を許して。