Правильные коды выхода из системы

Краткое объяснение и резюме:

В HTTP ожидаются коды для представления определенных вещей. Например, 200 означает, что все в порядке, а 500 означает, что на сервере возникла проблема. Собственные приложения также возвращают коды состояния. Например, git возвращает 0, когда все в порядке, но возвращает 128, если git не настроен в текущем каталоге. (Bash возвращает 127, если git даже не установлен)

Теперь вопрос:

При создании собственного приложения следует ли использовать какое-либо стандартное соглашение для кодов выхода?

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


person Nick Humrich    schedule 16.07.2014    source источник


Ответы (1)


EXIT_SUCCESS (т.е. 0) и EXIT_FAILURE (1) являются стандартными в <stdlib.h>). Прочтите также exit (3) и _ exit (2) справочные страницы. Обратите внимание, что аргумент функции exit является битовым или восьмеричным с 0377.

Некоторые системы BSD имеют больше соглашений (возможно, в заголовке <sysexits.h>, см. sysexits справочная страница), но GNU / Linux не слишком часто за ними следит.

Я предлагаю придерживаться EXIT_FAILURE -при сбое-, но выдавать, если возможно или уместно, сообщение об ошибке (на stderr или через системный журнал (3) ...)

Некоторые команды документируют свои несколько кодов выхода.

person Basile Starynkevitch    schedule 16.07.2014