如何在python中获取退出状态

时间:2013-05-13 06:37:24

标签: python-2.7 scons

我正在使用带有瑞萨编译器的scons构建工具。

当构建因错误而终止时,我想知道SCONS的退出状态。

当scons成功执行项目时,它将返回0.如何获取退出状态或数字以检查错误。

python中是否有任何函数可以获取它们。

由于

1 个答案:

答案 0 :(得分:1)

SCons.Script.Main.exit_statusSCons.script.Main.exit_status.code,但我发现它们在实践中不可靠(即它们通常与实际返回代码不同)。

通过使用适当的参数调用sys.exit来设置实际的退出代码。似乎访问它的唯一方法是用包装器替换原始的sys.exit

import atexit
import sys

exit_code = None
original_exit = None

def my_exit(code=0):
    global exit_code
    exit_code = code
    original_exit(code)

original_exit = sys.exit
sys.exit = my_exit

@atexit.register
def my_exit_handler():
    print "Exit code is", exit_code

if __name__ == '__main__':
    sys.exit(1)

如果您在出现错误时需要更多信息,可能还需要为sys.excepthook使用自定义包装器。还有SCons.Script.GetBuildFailures