Может ли кто-нибудь сказать мне? В чем разница между exit(0)
и exit(1)
на языке C?
В чем разница между выходом (0) и выходом (1) в C?
Ответ 1
В чем разница между 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
, форма, определяемая реализацией статуса неудачного завершения возвращается. В противном случае возвращается статус реализация-де определено.
Ответ 2
exit(0)
указывает, что программа завершена без ошибок. exit(1)
указывает, что произошла ошибка.
Вы можете использовать разные значения, отличные от 1
, чтобы различать различные типы ошибок.
Ответ 3
exit
в языке C принимает целое число, представляющее статус выхода.
Успех выхода
Как правило, статус выхода 0 считается успешным или умышленным выходом, вызванным успешным выполнением программы.
Выход из строя
Состояние выхода 1 считается неудачным, и чаще всего это означает, что программе по какой-то причине пришлось выйти, и он не смог успешно завершить все в обычном потоке программы.
Здесь Ресурс GNU, говорящий о статусе выхода.
Как указано в @Als, вместо 0 и 1 следует использовать две константы.
EXIT_SUCCESS
определяется стандартом равным нулю.
EXIT_FAILURE
не ограничивается стандартом как единым, но многие системы реализуют его как один.
Ответ 4
Разница - это значение, возвращаемое в среду, 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
с тем же аргументом.
Ответ 5
exit(0)
ведут себя как return 0
в main()
, exit(1)
ведут себя как return 1
. Стандартом является то, что main
function return 0
, если программа завершилась успешно, а ненулевое значение означает, что программа была прервана с некоторой ошибкой.
Ответ 6
exit - системный вызов, используемый для завершения текущего процесса, из которого он вызывается. Параметр для выхода используется для информирования родительского процесса о статусе дочернего процесса. Таким образом, exit (0) может использоваться (и часто используется) для указания успешного выполнения процесса и выхода (1) для отметки ошибки. ссылка ссылки
Ответ 7
Когда исполняемый файл заканчивается (завершает), он возвращает значение в оболочку, которая его запускала. exit(0)
обычно указывает, что все хорошо, а exit(1)
указывает, что что-то пошло не так.
Ответ 8
exit() всегда должен вызываться с целым значением, а ненулевые значения используются как коды ошибок.
Смотрите также: Использование функции exit()
Ответ 9
exit(0)
означает, что программа (процесс) завершается нормально успешно.
exit(1)
означает, что программа (процесс) обычно заканчивается неудачно.
Если вы хотите наблюдать эту вещь, вы должны знать обработку сигналов и управление процессами в Unix...
знать о sigaction
, watipid()
.. для()... таких.... API...........
Ответ 10
exit (0) эквивалентен exit (EXIT_SUCCESS).
выход (1) эквивалентен exit (EXIT_FAILURE).
При отказе обычно возвращается какое-либо положительное значение для выхода из процесса, которое вы можете найти в оболочке с помощью $?.
Значение более 128, которое вызвано завершением сигналом. Поэтому, если какая-либо команда оболочки завершена сигналом, статус возврата должен быть (128 + номер сигнала).
Например:
Если какая-либо команда оболочки завершается SIGINT, тогда $? даст 130 (128 + 2) (Здесь 2 - номер сигнала для SIGINT, проверьте с помощью kill -l)