Функция exit(), находящаяся в стандартной библиотеке, вызывает немедленное окончание работы программы. Поскольку функция exit() останавливает выполнение программы и форсирует возврат в операционную систему, она используется для управления устройствами, и ее использует подавляющее большинство программ. Функция exit() имеет следующий вид:
void exit (int статус);
Она использует заголовочный файл stdlib.h. Значение статуса возвращается в операционную систему.
Для индикации корректности завершения работы exit() традиционно вызывается с аргументом 0.
Другие аргументы используются для индикации различного рода ошибок. Можно также использовать предопределенные макросы EXIT_SUCCESS и EXIT_FAILURE в качестве значений для статуса.
exit() используется, когда условия выполнения программы неудовлетворительны. Например компьютерная игра может требовать специальный графический адаптер. Функция main() данной игры может выглядеть следующим образом:
#include
int main(void)
Как закрыть программу с помощью batch файла на windows
if (!special_adaptor()) exit(1);
play ();
return 0;
>
где special_adaptor() — это определенная пользователем функция, возвращающая истину, если необходимый адаптер присутствует. Если карта в системе отсутствует, то данная функция возвращает ложь и программа завершает работу.
В другом примере exit() используется для выхода из программы и возврата в операционную систему
void menu(void)
char ch;
printf («1. Check Spellingn»);
printf («2. Correct Spelling, Errorsn»);
printf(«3. Display Spelling Errorsn»);
printf(«4. Quitn»);
printf(» Enter your choice: «);
do ch = getchar(); /* чтение клавиатуры */
switch(ch)
case ‘1’:
check_spelling();
break;
case ‘2’:
correct_errors();
break;
case ‘3’:
display_errors ();
break;
case ‘4’:
exit(0); /* возврат в ОС*/
>
>
while(ch!=’1′ ch!=’2′ ch!=’3′);
>
Источник: www.c-cpp.ru
_Exit
Causes normal program termination to occur without completely cleaning the resources.
Functions passed to at_quick_exit() or atexit() are not called. Whether open streams with unwritten buffered data are flushed, open streams are closed, or temporary files are removed is implementation-defined.
If exit_code is 0 or EXIT_SUCCESS , an implementation-defined status indicating successful termination is returned to the host environment. If exit_code is EXIT_FAILURE , an implementation-defined status, indicating unsuccessful termination, is returned. In other cases an implementation-defined status value is returned.
Contents
[edit] Parameters
exit_code | — | exit status of the program |
[edit] Return value
[edit] Example
Run this code
Visual studio где exe. Как сделать exe файл в visual studio. Как скомпилировать cpp в exe. Урок #20.
#include #include /* _Exit does not call functions registered with atexit. */ void f1(void) { puts(«pushed first»); } void f2(void) { puts(«pushed second»); } int main(void) { printf(«Enter main()n»); atexit(f1); atexit(f2); fflush(stdout); /* _Exit may not flush unwritten buffered data */ _Exit(0); }
Enter main()
[edit] References
- C17 standard (ISO/IEC 9899:2018):
- 7.22.4.5 The _Exit function (p: 256)
- C11 standard (ISO/IEC 9899:2011):
- 7.22.4.5 The _Exit function (p: 352)
- C99 standard (ISO/IEC 9899:1999):
- 7.20.4.4 The _Exit function (p: 316)
Источник: en.cppreference.com
Как в си завершить программу
void _Exit(int status );
ОПИСАНИЕ
_exit «немедленно» завершает работу программы. Все дескрипторы файлов, принадлежащие процессу, закрываются; все его дочерние процессы начинают управляться процессом 1 (init), а родительскому процессу посылается сигнал SIGCHLD.
Значение status возвращается родительскому процессу как статус завершаемого процесса; он может быть получен с помощью одной из функций семейства wait .
Функция _Exit эквивалентна функции _exit .
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Эти функции никогда не возвращают управление вызвавшей их программе.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. Функция _Exit() была представлена C99.
ЗАМЕЧАНИЯ
Для рассмотрения эффектов завершения работы, передачу статуса выхода, зомби-процессов, сигналов и т.п., смотрите документацию по exit (3).
Функция _exit аналогична exit() , но не вызывает никаких функций, зарегистрированных с функцией ANSI C atexit , а также не вызывает никаких зарегистрированных обработчиков сигналов. Будет ли выполняться сброс стандартных буферов ввода-вывода и удаление временных файлов, созданных tmpfile (3), зависит от реализации. С другой стороны, _exit закрывает открытые дескрипторы файлов, а это может привести к неопределенной задержке для завершения вывода данных. Если задержка нежелательна, то может быть полезным перед вызовом _exit() вызывать функции типа tcflush() . Будет ли завершен ввод-вывод, а также какие именно операции ввода-вывода будут завершены при вызове _exit() , зависит от реализации.
Источник: www.opennet.ru