我正在尝试使用Python测试某些程序。我想看看是否在给定某些输入的情况下崩溃,无错误结束或运行时间超过超时。
理想情况下,我想使用子流程,因为我对此很熟悉。但是能够使用任何其他有用的库。我以为读取核心转储通知是一种选择,但是我还不知道该怎么做,也不知道这是否是最有效的方法。
答案 0 :(得分:0)
使用os
和What 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')
我还没有检查子进程是否返回相同的状态。