Подтвердить что ты не робот

В чем разница между выходом (0) и выходом (1) в C?

Может ли кто-нибудь сказать мне? В чем разница между exit(0) и exit(1) на языке C?

4b9b3361

Ответ 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)