exit, _exit
Завершает вызывающий процесс —exit завершает его после очистки; _exit завершает его незамедлительно.
Примечание
Не используйте этот метод для завершения приложения Магазин Windows, за исключением сценариев тестирования или отладки.Закрытие приложения Магазин Windows программным способом или с помощью пользовательского интерфейса на допускается в соответствии с разделом 3.6 сертификационных требований к приложениям для Windows 8.Дополнительные сведения см. в разделе Жизненный цикл приложения (приложения Магазина Windows).
void exit(
int status
);
void _exit(
int status
);
Параметры
- status
Состояние завершения.
Заметки
Функции exit и _exit завершают вызывающий процесс. exit вызывает в порядке очереди (LIFO) функции, зарегистрированные atexit и _onexit, а затем сбрасывает все файловые буферы до завершения процесса. _exit завершает процесс без обработки atexit или _onexit и без сброса буферов потоков. Как правило, status имеет значение 0 для указания нормального завершения или устанавливается в другое значение для указания ошибки.
Хотя вызовы exit и _exit не возвращают значение, младший байт status становится доступным ожидающему вызывающему процессу, если такой существует, после завершения ожидающего процесса. status значение становится доступным для пакетной команды операционной системы ERRORLEVEL и представлено одной из двух констант: EXIT_SUCCESS, которая представляет значение 0, или EXIT_FAILURE, которая представляет значение 1. exit, _exit, _cexit и _c_exit ведут себя следующим образом.
Функция |
Описание |
---|---|
exit |
Выполняет полные процедуры завершения библиотеки C, завершает процесс и завершается с предоставленным кодом состояния. |
_exit |
Выполняет быстрые процедуры завершения библиотеки C, завершает процесс и завершается с предоставленным кодом состояния. |
_cexit |
Выполняет полные процедуры завершения библиотеки C и возвращает управление вызывающему объекту, но не завершает процесс. |
_c_exit |
Выполняет быстрые процедуры завершения библиотеки C и возвращает управление вызывающему объекту, но не завершает процесс. |
При вызове функции exit или _exit, деструкторы для любых существующих во время вызова временных или автоматических объектов не вызываются. Автоматический объект определен в функции, в которой он не объявляется статическим. Временный объект — это объект, созданный компилятором. Чтобы удалить автоматический объект перед вызовом exit или _exit, явным образом вызовите деструктор объекта следующим образом:
myObject.myClass::~myClass();
Не используйте DLL_PROCESS_ATTACH для вызова exit из DllMain. Если требуется завершить функцию DLLMain, верните FALSE из DLL_PROCESS_ATTACH.
Требования
Функция |
Обязательный заголовок |
---|---|
exit |
<process.h> или <stdlib.h> |
_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 );
}
Эквивалент в .NET Framework
System::Diagnostics::Process::Kill