exit
, , _Exit
_exit
Завершает вызывающий процесс. Функция exit
завершает его после очистки; _exit
и _Exit
завершают его мгновенно.
Примечание.
Не используйте этот метод для завершения работы приложения универсальная платформа Windows (UWP), за исключением сценариев тестирования или отладки. Программные или пользовательские способы закрытия приложения Магазина запрещены в соответствии с политиками Microsoft Store. Дополнительные сведения см. в разделе жизненного цикла приложений UWP. Дополнительные сведения о приложениях UWP см. в универсальная платформа Windows документации.
Синтаксис
void exit(
int const status
);
void _Exit(
int const status
);
void _exit(
int const status
);
Параметры
status
Код состояния завершения.
Замечания
Функции exit
, _Exit
и _exit
завершают вызывающий процесс. Функция exit
вызывает деструкторы для объектов локального потока, а затем вызывает в порядке "последним пришел — первым вышел" (LIFO) функции, зарегистрированные atexit
и _onexit
, а затем очищает все файловые буферы перед завершением процесса. Функции _Exit
и _exit
завершают процесс без удаления объектов локального потока или обработки функций atexit
или _onexit
, а также без очистки буферов потока.
exit
_Exit
Хотя вызовы и _exit
вызовы не возвращают значение, значение status
становится доступным для среды узла или ожидающего вызова, если он существует, после завершения процесса. Как правило, вызывающая функция задает для status
значение 0 для указания нормального завершения или принимает другое значение для указания ошибки. Значение status
становится доступным для пакетной команды операционной системы ERRORLEVEL
и представлено одной из двух констант: EXIT_SUCCESS
, которая представляет значение 0, или EXIT_FAILURE
, которая представляет значение 1.
Функции exit
, _Exit
, _exit
, quick_exit
, _cexit
и _c_exit
ведут себя следующим образом.
Function | Description |
---|---|
exit |
Выполняет полные процедуры завершения библиотеки C, завершает процесс и предоставляет полученный код состояния среде узла. |
_Exit |
Выполняет минимальные процедуры завершения библиотеки C, завершает процесс и предоставляет полученный код состояния среде узла. |
_exit |
Выполняет минимальные процедуры завершения библиотеки C, завершает процесс и предоставляет полученный код состояния среде узла. |
quick_exit |
Выполняет быстрые процедуры завершения библиотеки C, завершает процесс и предоставляет полученный код состояния среде узла. |
_cexit |
Выполняет полные процедуры завершения библиотеки C и возвращает управление вызывающему объекту. Не завершает процесс. |
_c_exit |
Выполняет минимальные процедуры завершения библиотеки C и возвращает управление вызывающему объекту. Не завершает процесс. |
При вызове exit
_Exit
функции _exit
деструкторы для любых временных или автоматических объектов, которые существуют во время вызова, не вызываются. Автоматический объект — это нестатичный локальный объект, определенный в функции. Временный объект — это объект, созданный компилятором, например значение, возвращаемое вызовом функции. Чтобы уничтожить автоматический объект перед вызовом exit
_Exit
или _exit
явным образом вызвать деструктор для объекта, как показано ниже:
void last_fn() {}
struct SomeClass {} myInstance{};
// ...
myInstance.~SomeClass(); // explicit destructor call
exit(0);
}
Не используйте DLL_PROCESS_ATTACH
для вызова exit
из DllMain
. Чтобы выйти из DLLMain
функции, вернитесь FALSE
из DLL_PROCESS_ATTACH
.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Function | Обязательный заголовок |
---|---|
exit , , _Exit _exit |
<process.h> или <stdlib.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_exit.c
// This program returns an exit code of 1. The
// error code could be tested in a batch file.
#include <stdlib.h>
int main( void )
{
exit( 1 );
}
См. также
Управление процессами и средой
abort
atexit
_cexit
, _c_exit
_exec
, _wexec
функции
_onexit
, _onexit_m
quick_exit
_spawn
, _wspawn
функции
system
, _wsystem