Кто-нибудь может мне сказать? В чем разница между exit(0)и exit(1)в языке C?
Ответы:
В чем разница между exit(0)и exit(1)в языке C?
exit(0)указывает на успешное завершение программы и полностью переносимо, в то время как
exit(1)(обычно) указывает на неудачное завершение. Однако его использование непереносимо.
Обратите внимание, что стандарт C определяет EXIT_SUCCESSи EXIT_FAILUREдля возврата статуса завершения из программы C.
0и EXIT_SUCCESSявляются значениями, указанными в стандарте для индикации успешного завершения, однако это только EXIT_FAILUREстандартное значение для возврата неудачного завершения. 1хотя и используется во многих реализациях.
Ссылка:
C99 Стандарт: 7.20.4.3 exitФункция,
пункт 5
Наконец, управление возвращается в среду хоста. Если значение статуса равно нулю или
EXIT_SUCCESS, возвращается форма успешного завершения статуса, определяемая реализацией. Если значение статуса равноEXIT_FAILURE, возвращается форма, определяемая реализацией неудачного завершения статуса. В противном случае возвращаемый статус определяется реализацией.
exitбудет наименьшей из ваших проблем (черт возьми, там может и не быть доступной библиотеки C. НИЧЕГО НЕ ПОРТАТИВНО !!! 111).
exitс любым нечетным значением означает успех. exit(0)рассматривается как частный случай ради соответствия C. Да, POSIX - это стандарт, но не все системы ему соответствуют. Если вы хотите написать код, предполагающий POSIX, вы можете это сделать, но это ограничивает переносимость вашего кода.
exit в языке C принимает целое число, представляющее статус выхода.
Обычно статус выхода 0 считается успешным или преднамеренным выходом, вызванным успешным выполнением программы.
Статус выхода 1 считается ошибкой и чаще всего означает, что программа должна была выйти по какой-либо причине и не смогла успешно завершить все в обычном потоке программы.
Вот ресурс GNU, говорящий о статусе выхода.
Как заявил @Als, следует использовать две константы вместо 0 и 1.
EXIT_SUCCESS определяется стандартом равным нулю.
EXIT_FAILURE не ограничивается стандартом как единое целое, но многие системы реализуют его как единое целое.
Разница в том, что значение, возвращаемое среде, 0в первом случае и 1во втором случае:
$ ./prog_with_exit_0
$ echo $?
0
$
и
$ ./prog_with_exit_1
$ echo $?
1
$
Также обратите внимание, что значение макроса EXIT_SUCCESSи EXIT_FAILUREиспользуется в качестве аргумента exitфункции определяется реализацией, но обычно устанавливается соответственно 0на ненулевое число. (POSIX EXIT_SUCCESSдолжен быть 0). Так обычно exit(0)означает успех и exit(1)неудачу.
exitВызов функции с аргументом в mainфункции эквивалентно утверждения returnс тем же аргументом.
exit - это системный вызов, используемый для завершения запущенного процесса, из которого он был вызван. Параметр выхода используется для информирования родительского процесса о состоянии дочернего процесса. Таким образом, exit (0) может использоваться (и часто используется) для обозначения успешного выполнения процесса и exit (1) для обозначения ошибки. ссылка на ссылку
exit(0) означает, что программа (процесс) завершается нормально успешно.
exit(1) означает, что программа (процесс) завершается нормально безуспешно.
Если вы хотите наблюдать за этим, вы должны знать обработку сигналов и управление процессами в Unix ...
знаю про sigaction, watipid()..for () ... такие .... API ...........
exit(0)вести себя как return 0в main()функции, exit(1)вести себя как return 1. Стандарт заключается в том, что эта mainфункция return 0, если программа завершилась успешно, а значение, отличное от нуля, означает, что программа была завершена с какой-то ошибкой.
exit (0) эквивалентен exit (EXIT_SUCCESS).
exit (1) эквивалентен exit (EXIT_FAILURE).
При сбое обычно возвращается любое положительное значение для выхода из процесса, которое можно найти в оболочке с помощью $ ?.
Значение больше 128, что обусловлено прекращением сигнала. Поэтому, если какая-либо команда оболочки завершается сигналом, статус возврата должен быть (128 + номер сигнала).
Например:
Если какая-либо команда оболочки завершается SIGINT, тогда $? даст 130 (128 + 2) (здесь 2 - номер сигнала для SIGINT, проверьте с помощью kill -l)
exit () всегда следует вызывать с целочисленным значением, а ненулевые значения используются как коды ошибок.
См. Также: Использование функции exit ()
exit function. В языке программирования C функция выхода вызывает все функции, зарегистрированные с помощью при выходе, и завершает программу.
exit(1)означает, что программа (процесс) завершилась неудачно.
Буферы файлов очищаются, потоки закрываются, а временные файлы удаляются.
exit(0) означает, что Программа (Процесс) завершена успешно.
EXIT_FAILUREТаким образом, одной константы ( ) недостаточно.