Почему ULIMIT -N изменяет жесткий предел

Используйте коды выхода для передачи этой информации. Если вы хотите следовать соглашениям , вы можете использовать, например, код

EX_DATAERR=65 

, чтобы сообщить об ошибке синтаксического анализа. вашему родительскому процессу:

Child

exit "$EX_DATAERR"

Parent

 case "$?" in  #$? is the exit code of the last exited child
              0) echo 'Child has exited succesfully';;
  "$EX_DATAERR") echo 'Child has experienced a parsing error';;
              *) echo 'Child has experienced an unknown error';;
esac

Что касается обработки ошибок, оболочка похожа на C, а не на C ++. Это не бросает. Каждая ошибка должна быть возвращена вызываемым (для процессов по их кодам выхода, поскольку нет глобального errno (использование файловой системы для этого было бы неуклюже), а вызывающий должен явно проверять наличие ошибок.

Однако вы можете сделать ] set -e в вашей оболочке, чтобы ваша оболочка завершила работу с ошибкой, если любой из ее дочерних элементов, чей статус выхода не был проверен (например, в операторе if ), возвращает ненулевой выход status. Это похоже на выдачу неуловимого исключения.

0
27.10.2018, 10:24
0 ответов

Теги

Похожие вопросы