我使用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()