如何确定通过Python运行的程序(理想情况下带有子进程)是否崩溃或成功结束

时间:2019-04-05 05:08:42

标签: python subprocess

我正在尝试使用Python测试某些程序。我想看看是否在给定某些输入的情况下崩溃,无错误结束或运行时间超过超时。

理想情况下,我想使用子流程,因为我对此很熟悉。但是能够使用任何其他有用的库。我以为读取核心转储通知是一种选择,但是我还不知道该怎么做,也不知道这是否是最有效的方法。

1 个答案:

答案 0 :(得分:0)

使用osWhat is the return value of os.system() in Python?,解决方案可能是:

status = os.system(cmd)
# status is a 16 bit number, which first 8 bits from left(lsb) talks about signal used by os to close the command, Next 8 bits talks about return code of command.
sig, ret = os.WIFSIGNALED(status), os.WEXITSTATUS(status)
# then check some usual problems:
if sig:
    if status == 11:      # SIGSEGV
        print ('crashed by segfault')
    elif status == 6 :    # SIGABRT
        print('was aborted')
    else: # 14, 9 are related to timeouts if you like them
        print('was stopped abnormally with', status)
else:
    print('program finished properly')

我还没有检查子进程是否返回相同的状态。