捕获产生更多进程的子进程的输出?

时间:2016-10-07 12:41:48

标签: python process subprocess stdout

我想在Python子流程中启动一个外部应用程序,如下所示:

import subprocess
...
process = subprocess.POpen (shlex.split ("make test-scripts"),
                            env=my_environment, 
                            stdout=my_logfile, stderr=my_logfile)
result = process.wait ()

因此make命令将启动另一个要测试的应用程序,并且我对在日志文件中捕获的结果输出感兴趣。

除非启动的应用程序也产生自己的进程,否则这种方法很有效。在这种情况下,这些新进程的输出不会出现在我的日志文件中,而是直接在DOS shell中启动上面的python脚本。

有没有办法获得这些" sub sub"的输出?流程呢?

我已经尝试过(但没有奏效):

  • 由我自己的听众重新定义sys.stdoutsys.stderr
  • 各种'2>&1'重定向。
  • 使用子进程参数进行各种实验(stdout通过PIPE,shell = True,......)

我发现这个方向的唯一提示是Capture standard output for Python child spawned by external package,但这与Python子进程应用程序有关(我启动的应用程序是用C ++编写的)。

0 个答案:

没有答案