Проверка возвращаемого значения исполняемого файла C ++ с помощью сценария оболочки - PullRequest
4 голосов
/ 03 марта 2010

Я запускаю сценарий оболочки в Windows с Cygwin, в котором я запускаю программу несколько раз с разными аргументами каждый раз. Иногда программа генерирует ошибку сегментации для некоторых входных аргументов. Я хочу сгенерировать текстовый файл, в котором сценарий оболочки может написать, для какого из входных данных программа завершилась неудачно. В основном я хочу проверять возвращаемое значение программы каждый раз, когда она запускается. Здесь я предполагаю, что при сбое программы она возвращает значение, отличное от того, когда она завершается успешно. Я не уверен в этом. Исполняемый файл - это программа на C ++.

Возможно ли это сделать? Пожалуйста, руководство. Если возможно, предоставьте фрагмент кода для сценария оболочки.

Также, скажите, пожалуйста, какие возвращаются все значения.

Мой скрипт - .sh файл.

Ответы [ 4 ]

3 голосов
/ 03 марта 2010

Возвращаемое значение последней завершенной программы доступно в переменной среды $?.

0 голосов
/ 03 марта 2010

Если в аргументах командной строки нет значительных пробелов:

cat <<'EOF' |
-V
-h
-:
-a whatnot peezat
!

while read args
do
    if program $args
    then : OK
    else echo "!! FAIL !! ($?) $args" >> logfile
    fi
done

Это требует больше усилий (чтобы быть вежливым), если вы должны оставить пробелы. Ну, немного больше усилий; вы, вероятно, используете eval перед «программой».

0 голосов
/ 03 марта 2010

Вы можете проверить возвращаемое значение, используя команду if оболочки:

if program; then
    echo Success
else
    echo Fail
fi

или используя списки "и" или "или" для выполнения дополнительных команд только в том случае, если у вас все получилось или не получилось:

program && echo Success
program || echo Fail

Обратите внимание, что тест завершается успешно, если программа возвращает 0 в случае успеха, что немного нелогично, если вы привыкли к условиям C / C ++, выполняющимся для ненулевых значений.

0 голосов
/ 03 марта 2010

если это bat файл, вы можете использовать% ERRORLEVEL%

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