execv单个python脚本中的多个可执行文件?

时间:2014-08-18 02:12:58

标签: python execv

据我所知,execv取代了当前进程,一旦被调用的可执行文件完成,程序就会终止。我想在同一个脚本中多次调用execv,但由于这个原因,无法完成。

是否有替代execv在当前进程中运行(即打印到相同的标准输出)并且不能终止我的程序?如果是这样,它是什么?

2 个答案:

答案 0 :(得分:1)

是的,请使用subprocess 来自doc:

os.execv*不适合您的任务
  

这些函数都执行一个新程序,取代当前的程序   处理;他们不回来。在Unix上,加载了新的可执行文件   进入当前进程,并将具有相同的进程ID   呼叫者。

因此,正如您希望外部exe打印到相同的输出一样,您可以这样做:

import subprocess
output = subprocess.check_output(['your_exe', 'arg1'])

默认情况下,check_output()仅返回写入标准输出的输出。如果您想同时收集标准输出和错误,请使用stderr参数。

output = subprocess.check_output(['your_exe', 'arg1'], stderr=subprocess.STDOUT)

答案 1 :(得分:0)

stdlib中的subprocess模块是创建进程的最佳方式。