Python コード内から、標準入力からパラメーターを取得するバイナリ プログラムを実行したいと考えています。subprocess モジュールを使用すると、これは簡単です。
import subprocess
command = [ 'my_program' ]
p = subprocess.Popen( command, \
stdin = subprocess.PIPE, stdout = subprocess.PIPE, \
env={ "GFORTRAN_UNBUFFERED_ALL": "1"} )
p.stdin.write ( stdin_stuff )
while True:
o = p.stdout.readline()
if p.poll() != None:
break
# Do something with stdout
これでプログラムが起動しますが、python スクリプトがそこでハングします。これはgfortranが原因である可能性があることを理解しています(my_programをコンパイルするために使用するのは、stdoutストリームをバッファリングしています.gfortranは、私が行ったようにGFORTRAN_UNBUFFERED_ALL環境変数を使用するだけでなく、fortranコードでFLUSH()組み込みを使用することもできます、しかしまだ運が悪い: python コードはまだハングします。