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

Для приложений C/C ++ в Windows (не GUI), какой должен быть правильный список кодов ошибок для разных сбоев? Я видел разные списки, например, от IBM и других, но мне было интересно, существует ли какой-то консенсус относительно типичных кодов ошибок, предоставляемых пользователю при выходе из программы.

1
nl ja de

3 ответы

Для аргумента exit есть три переносных значения: 0 , EXIT_FAILURE и EXIT_SUCCESS . 0 эквивалентен EXIT_SUCCESS .

3
добавлено
Они не обязательно равны, @Shahbaz, хотя они эквивалентны. То есть, передача одного из них в exit заставляет программу возвращать «определенную реализацией форму статуса успешное завершение ». (7.20.4.3/5) Самый простой способ убедиться, что это произойдет, - это сделать значения равными, но возможно, что exit может быть реализован для распознавания нескольких обозначенных «успешных» значений (т. Е. Оба нуля и любой EXIT_SUCCESS расширяется до).
добавлено автор Rob Kennedy, источник
Стандарт (по крайней мере, C) не говорит ничего о возвращаемом значении 0 и его отношении с EXIT_SUCCESS (насколько я помню). Можете ли вы сослаться на стандарт?
добавлено автор Shahbaz, источник
@RobKennedy, правильно. Я пропустил нуль в «Если значение статуса ноль или EXIT_SUCCESS"
добавлено автор Shahbaz, источник

От: http://www.cplusplus.com/reference/cstdlib/EXIT_SUCCESS/

для успеха выхода из программы:

exit(EXIT_SUCCESS);

для выхода из программы:

exit(EXIT_FAILURE);

Из Wikipedia :

Помимо макросов EXIT_SUCCESS и EXIT_FAILURE, стандарт C   не определяет значение кодов возврата. Правила использования   коды возврата различаются на разных платформах (см.   участки).

В википедии:

<сильный> DOS

     

В терминологии DOS уровень ошибок - это код завершения целого кода, возвращаемый   исполняемую программу или подпрограмму. Уровни ошибок обычно варьируются от   0 до 255. В DOS доступно только 256 кодов ошибок.

     

<сильный> Окно

     

В качестве кодов выхода Windows использует 32-разрядные целые числа. [9] Если процесс   неудачная инициализация, может быть возвращен код ошибки системы Windows. [10]   Коды ошибок системы Windows доступны в Интернете. [11]

     

Коды выхода напрямую ссылаются, например, на командную строку   интерпретатора CMD.exe в терминологии уровня ошибок, унаследованной от DOS.   Процессы .NET Framework и Windows PowerShell относятся к нему как к   Свойство ExitCode объекта Process.

Согласно wikipedia, следующая ссылка содержит коды ошибок, связанные с окнами Платформа

2
добавлено
Википедия ошибается. 0 является допустимым аргументом для exit .
добавлено автор Pete Becker, источник
jcatki.no-ip.org/fncpp/cplusplus.com
добавлено автор Griwes, источник

Насколько я знаю, таких стандартов нет. Единственный стандарт - вернуть EXIT_SUCCESS (из stdlib.h) в случае успешного возврата. Это помогает скриптам, которые называют вашу программу проверкой на успех. Коды ошибок, которые вы возвращаете, должны быть хорошо документированы для вашей программы. POSIX рекомендует возвращать между 0-255 из основного. Обычно 0 - EXIT_SUCCESS.

Если у вас есть только один возврат отказа, вы можете использовать EXIT_FAILURE.

1
добавлено
Re: «Обычно 0 является EXIT_SUCCESS ": на каждой соответствующей реализации 0 и EXIT_SUCCESS оба может использоваться для указания успеха.
добавлено автор Pete Becker, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest