Поделиться через


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.

Требования

Функция Обязательный заголовок
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