Как определить, завершилась ли программа, запущенная через Python (в идеале с подпроцессом), сбой или завершилась успешно - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь протестировать некоторые программы с помощью Python.Я хочу посмотреть, если при определенных входных данных они дают сбой, завершаются без ошибок или работают дольше, чем время ожидания.

В идеале я хотел бы использовать подпроцесс, поскольку я знаком с этим.Однако я могу использовать любую другую полезную библиотеку.Я предполагаю, что чтение уведомлений о дампе ядра является вариантом, однако я пока не знаю, как это сделать, и не знаю, является ли это наиболее эффективным способом.

1 Ответ

0 голосов
/ 05 апреля 2019

Использование os и Что такое возвращаемое значение os.system () в 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')

Я еще не проверял,подпроцесс возвращает тот же статус.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...