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

問題は、コメントを開くときです。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]

私は何かを言おうとしますが、何が起こったのかについて何かを感じることができます. したがって、これ以上分析せずに、問題を修正する方法をコードに入れただけです。私を許して。

4

0 に答える 0