Python を使用して特定のソフトウェアをテストします。つまり、これはバッチ処理を行う C++ プログラムです。さまざまなデータ セットとパラメーターを使用して起動する必要があるため、Python でツールを作成しました。基本的にプロセスを起動し、エラー ストリームをファイルに保存し、出力ストリームを解析してライブ フィードバックを取得します。(標準出力ストリームはそれほど冗長ではありません。)
テスト済みの c++ プログラムが時々ハングすることを除いて、ほとんど期待どおりに動作します。このハングは、私のテスト ターゲットの一部、Windows XP でのみ発生し、他の win 7 やその他の Windows XP では決して発生しません。ハングが発生する可能性のあるターゲットでは、コマンド ラインから直接起動すると、ソフトウェアは正常に動作します。
IO ストリームの処理が原因でデッドロックが発生していると思われますが、その理由はわかりません。
これが私のコードからの抜粋です:
stderrFile = open("err.txt", 'w')
stdoutFile = open("out.txt", 'w')
p = subprocess.Popen(args, stdout = subprocess.PIPE, stderr =stderrFile, env = runEnv)
outStream = p.stdout
for line in outStream:
line = line.rstrip()
if line.startswith('======== '):
print " - " + line[9:]
stdoutFile.write(line + '\n')
returnCode = p.wait()