Python调用makefile编译并捕获make的输出

时间:2013-11-21 06:57:09

标签: python makefile subprocess

Jenkins中的一个作业调用我的python脚本,我想在其中调用make来编译我的UT代码,如果编译错误如“make:*** []错误则引发sys.exit(1) 1“发生。

我还需要实时打印输出。

这是我的python脚本:

make_process = subprocess.Popen("make clean all;", shell=True, stdout=subprocess.PIPE, stderr=sys.stdout.fileno())
    while True:
        line = make_process.stdout.readline()
        if not line:break
        print line, #output to console in time
        sys.stdout.flush()

但是如何捕获make错误并让这个python脚本失败?

注意:

更新 结果是makefile问题。查看已接受答案的评论。但对于这个蟒蛇问题,五角大楼给出了正确答案。

1 个答案:

答案 0 :(得分:2)

您可以通过

检查 make 流程的返回值
make_process.poll()

如果进程仍在运行,则返回“None”,如果已完成,则返回错误代码。如果您只想让输出在控制台上结束,则无需手动执行此操作 无论如何输出都会进入控制台,可以这样做:

make_process = subprocess.Popen("make clean all", stderr=subprocess.STDOUT)
if make_process.wait() != 0:
     something_went_wrong();