Кто-нибудь может мне сказать? В чем разница между 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_FAILURE
Таким образом, одной константы ( ) недостаточно.exit
будет наименьшей из ваших проблем (черт возьми, там может и не быть доступной библиотеки C. НИЧЕГО НЕ ПОРТАТИВНО !!! 111).exit
с любым нечетным значением означает успех.exit(0)
рассматривается как частный случай ради соответствия C. Да, POSIX - это стандарт, но не все системы ему соответствуют. Если вы хотите написать код, предполагающий POSIX, вы можете это сделать, но это ограничивает переносимость вашего кода.exit
в языке C принимает целое число, представляющее статус выхода.Выход из успеха
Обычно статус выхода 0 считается успешным или преднамеренным выходом, вызванным успешным выполнением программы.
Выход из строя
Статус выхода 1 считается ошибкой и чаще всего означает, что программа должна была выйти по какой-либо причине и не смогла успешно завершить все в обычном потоке программы.
Вот ресурс GNU, говорящий о статусе выхода.
Как заявил @Als, следует использовать две константы вместо 0 и 1.
EXIT_SUCCESS
определяется стандартом равным нулю.EXIT_FAILURE
не ограничивается стандартом как единое целое, но многие системы реализуют его как единое целое.источник
exit(0)
указывает, что программа завершилась без ошибок.exit(1)
указывает на то, что произошла ошибка.Вы можете использовать разные значения, кроме
1
различий между различными типами ошибок.источник
Разница в том, что значение, возвращаемое среде,
0
в первом случае и1
во втором случае:и
Также обратите внимание, что значение макроса
EXIT_SUCCESS
иEXIT_FAILURE
используется в качестве аргументаexit
функции определяется реализацией, но обычно устанавливается соответственно0
на ненулевое число. (POSIXEXIT_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(0)
обычно указывает на то, что все в порядке, в то время какexit(1)
указывает на то, что что-то пошло не так.источник
exit () всегда следует вызывать с целочисленным значением, а ненулевые значения используются как коды ошибок.
См. Также: Использование функции exit ()
источник
exit function
. В языке программирования C функция выхода вызывает все функции, зарегистрированные с помощью при выходе, и завершает программу.exit(1)
означает, что программа (процесс) завершилась неудачно. Буферы файлов очищаются, потоки закрываются, а временные файлы удаляются.exit(0)
означает, что Программа (Процесс) завершена успешно.источник