Windows с exit function

Описание функций языка Си

All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

exit – завершение работы программы

#include
void exit (int code);

int code – определяет статус завершения работы, 0 (EXIT_SUCCESS)– нормальное завершение работы, отличное от нуля значение (EXIT_FAILURE) – завершение работы с индикацией ошибки.

Ничего не возвращает.

Функция exit (), завершает работу программы. Аргумент code указывает статус завершения работы. При завершении работы в штатном порядке рекомендуется указывать значение статуса 0 или EXIT_SUCCESS. В противном случае рекомендуется указывать отличное от нуля значение или EXIT_FAILURE.

При вызове функции exit () в начале вызываются все функции зарегистрированные функцией atexit () в порядке обратном регистрации. Если какие то функции были зарегистрированы несколько раз, то они будут вызваны столько раз, сколько раз были зарегистрированы.

Затем сбрасываются и закрываются все открытые программой потоки данных и удаляются все созданные временные файлы (созданные с помощью функции tmpfile()). Затем завершается работы программы.

В примере, организуется бесконечный цикл, в котором анализируются символы, вводимые в стандартный поток ввода-вывода. Как только программа встречает символ ‘e’, она завершает работу, вызывая функцию exit (). В качестве параметра функции указывается статус EXIT_SUCCESS, так как завершение работы штатное.

exit, _Exit, _exit exit, _Exit, _exit

Завершает вызывающий процесс. Terminates the calling process. Функция Exit завершает ее после очистки; _exit и _Exit завершать его немедленно. The exit function terminates it after cleanup; _exit and _Exit terminate it immediately.

Не используйте этот метод для завершения работы приложения универсальная платформа Windows (UWP), за исключением сценариев тестирования или отладки. Do not use this method to shut down a Universal Windows Platform (UWP) app, except in testing or debugging scenarios. В соответствии с политиками Microsoft Storeне разрешено закрывать приложения Магазина программным способом или с помощью пользовательского интерфейса. Programmatic or UI ways to close a Store app are not permitted according to the Microsoft Store policies. Дополнительные сведения см. в статье жизненный цикл приложения UWP. For more information, see UWP App lifecycle. Дополнительные сведения о приложениях Windows 10 см. в разделе Практические руководства для приложений Windows 10. For more information about Windows 10 apps, see How-to guides for Windows 10 apps.

Синтаксис Syntax

Параметры Parameters

status status
Код состояния завершения. Exit status code.

Комментарии Remarks

Функции Exit, _Exit и _exit завершают вызывающий процесс. The exit, _Exit and _exit functions terminate the calling process. Функция Exit вызывает деструкторы для локальных объектов потока, а затем вызывает (в порядке ЛИФО) — функции, зарегистрированные atexit и _onexit, а затем очищает все буферы файлов до завершения процесса. The exit function calls destructors for thread-local objects, then calls—in last-in-first-out (LIFO) order—the functions that are registered by atexit and _onexit, and then flushes all file buffers before it terminates the process. Функции _Exit и _exit завершают процесс без удаления локальных объектов потока или обработки atexit или функций _onexit , а также без очистки буферов потока. The _Exit and _exit functions terminate the process without destroying thread-local objects or processing atexit or _onexit functions, and without flushing stream buffers.

Читайте также:  Sqlplus command from linux

Несмотря на то, что вызовы Exit, _Exit и _exit не возвращают значение, значение в поле состояние становится доступным для среды размещения или ожидающего вызывающего процесса, если он существует, после завершения процесса. Although the exit, _Exit and _exit calls do not return a value, the value in status is made available to the host environment or waiting calling process, if one exists, after the process exits. Как правило, вызывающий объект устанавливает значение состояния 0, чтобы указать на нормальную работу, или на какое-либо другое значение, чтобы указать на ошибку. Typically, the caller sets the status value to 0 to indicate a normal exit, or to some other value to indicate an error. Значение состояния доступно для команды Batch операционной системы ERRORLEVEL и представляется одной из двух констант: EXIT_SUCCESS, представляющей значение 0, или EXIT_FAILURE, который представляет значение 1. The status value is available to the operating-system batch command ERRORLEVEL and is represented by one of two constants: EXIT_SUCCESS, which represents a value of 0, or EXIT_FAILURE, which represents a value of 1.

Функции Exit, _Exit, _exit, quick_exit, _cexit и _c_exit ведут себя следующим образом. The exit, _Exit, _exit, quick_exit, _cexit, and _c_exit functions behave as follows.

Функция Function Описание Description
exit exit Выполняет полные процедуры завершения библиотеки C, завершает процесс и предоставляет полученный код состояния среде узла. Performs complete C library termination procedures, terminates the process, and provides the supplied status code to the host environment.
_Exit _Exit Выполняет минимальные процедуры завершения библиотеки C, завершает процесс и предоставляет полученный код состояния среде узла. Performs minimal C library termination procedures, terminates the process, and provides the supplied status code to the host environment.
_exit _exit Выполняет минимальные процедуры завершения библиотеки C, завершает процесс и предоставляет полученный код состояния среде узла. Performs minimal C library termination procedures, terminates the process, and provides the supplied status code to the host environment.
quick_exit quick_exit Выполняет быстрые процедуры завершения библиотеки C, завершает процесс и предоставляет полученный код состояния среде узла. Performs quick C library termination procedures, terminates the process, and provides the supplied status code to the host environment.
_cexit _cexit Выполняет полные процедуры завершения библиотеки C и возвращает управление вызывающему объекту. Performs complete C library termination procedures and returns to the caller. Не завершает процесс. Does not terminate the process.
_c_exit _c_exit Выполняет минимальные процедуры завершения библиотеки C и возвращает управление вызывающему объекту. Performs minimal C library termination procedures and returns to the caller. Не завершает процесс. Does not terminate the process.

При вызове функции Exit, _Exit или _exit деструкторы для всех временных или автоматических объектов, которые существуют во время вызова, не вызываются. When you call the exit, _Exit or _exit function, the destructors for any temporary or automatic objects that exist at the time of the call are not called. Автоматический объект — это не статический локальный объект, определенный в функции. An automatic object is a non-static local object defined in a function. Временный объект — это объект, созданный компилятором, например значение, возвращаемое вызовом функции. A temporary object is an object that’s created by the compiler, such as a value returned by a function call. Чтобы уничтожить автоматический объект перед вызовом функции Exit, _Exit или _exit, явно вызовите деструктор для объекта, как показано ниже: To destroy an automatic object before you call exit, _Exit, or _exit, explicitly call the destructor for the object, as shown here:

Не используйте DLL_PROCESS_ATTACH для вызова Exit из DllMain. Do not use DLL_PROCESS_ATTACH to call exit from DllMain. Чтобы выйти из функции DllMain , возвратите значение false из DLL_PROCESS_ATTACH. To exit the DLLMain function, return FALSE from DLL_PROCESS_ATTACH.

По умолчанию глобальное состояние этой функции ограничивается приложением. By default, this function’s global state is scoped to the application. Чтобы изменить это, см. раздел глобальное состояние в CRT. To change this, see Global state in the CRT.

Требования Requirements

Дополнительные сведения о совместимости см. в статье Compatibility. For additional compatibility information, see Compatibility.

Завершение программы C++ C++ program termination

В C++ можно выйти из программы следующими способами: In C++, you can exit a program in these ways:

  • Вызовите exit функцию. Call the exit function.
  • Вызовите abort функцию. Call the abort function.
  • Выполните return инструкцию из main . Execute a return statement from main .

Функция exit exit function

exit Функция, объявленная в , завершает программу на C++. The exit function, declared in , terminates a C++ program. Значение, передаваемое в качестве аргумента, exit возвращается операционной системе в качестве кода возврата программы или кода выхода. The value supplied as an argument to exit is returned to the operating system as the program’s return code or exit code. Принято, чтобы нулевым кодом возврата обозначалось, что программа завершена успешно. By convention, a return code of zero means that the program completed successfully. Константы EXIT_FAILURE и EXIT_SUCCESS , также определенные в, можно использовать для обозначения успеха или неудачи программы. You can use the constants EXIT_FAILURE and EXIT_SUCCESS , also defined in , to indicate success or failure of your program.

Выдача return инструкции из main функции эквивалентна вызову exit функции с возвращаемым значением в качестве аргумента. Issuing a return statement from the main function is equivalent to calling the exit function with the return value as its argument.

Функция abort abort function

abort Функция, также объявленная в стандартном включаемом файле , завершает программу на C++. The abort function, also declared in the standard include file , terminates a C++ program. Разница между exit и заключается в том abort , что exit позволяет выполнять обработку завершения при завершении выполнения C++ (вызываются деструкторы глобальных объектов), но abort немедленно завершает программу. The difference between exit and abort is that exit allows the C++ run-time termination processing to take place (global object destructors get called), but abort terminates the program immediately. abort Функция обходит обычный процесс уничтожения инициализированных глобальных статических объектов. The abort function bypasses the normal destruction process for initialized global static objects. Он также обходит любую специальную обработку, указанную с помощью atexit функции. It also bypasses any special processing that was specified using the atexit function.

Функция atexit atexit function

Используйте atexit функцию, чтобы указать действия, которые выполняются до завершения программы. Use the atexit function to specify actions that execute before the program terminates. Глобальные статические объекты, инициализированные до уничтожения вызова atexit , не будут уничтожены до выполнения функции выхода. No global static objects initialized before the call to atexit are destroyed before execution of the exit-processing function.

return в main return statement in main

Выдача return инструкции из main функционально эквивалентна вызову exit функции. Issuing a return statement from main is functionally equivalent to calling the exit function. Рассмотрим следующий пример. Consider the following example:

exit Операторы и return в предыдущем примере функционально идентичны. The exit and return statements in the preceding example are functionally identical. Как правило, для C++ требуются функции, которые возвращают типы, отличные от void возвращаемых значений. Normally, C++ requires that functions that have return types other than void return a value. main Функция является исключением; она может завершаться без return оператора. The main function is an exception; it can end without a return statement. В этом случае он возвращает зависящее от реализации значение для вызывающего процесса. In that case, it returns an implementation-specific value to the invoking process. return Оператор позволяет указать возвращаемое значение из main . The return statement allows you to specify a return value from main .

Уничтожение статических объектов Destruction of static objects

При вызове exit или выполнении return инструкции из main статические объекты уничтожаются в обратном порядке их инициализации (после вызова метода, atexit если он существует). When you call exit or execute a return statement from main , static objects are destroyed in the reverse order of their initialization (after the call to atexit if one exists). В следующем примере показано выполнение такого процесса инициализации и удаления. The following example shows how such initialization and cleanup works.

Пример Example

В следующем примере статические объекты sd1 и sd2 создаются и инициализируются перед записью в main . In the following example, the static objects sd1 and sd2 are created and initialized before entry to main . После завершения выполнения этой программы с помощью return инструкции сначала sd2 уничтожается, а затем sd1 . After this program terminates using the return statement, first sd2 is destroyed and then sd1 . Деструктор класса ShowData закрывает файлы, связанные с этими статическими объектами. The destructor for the ShowData class closes the files associated with these static objects.

Другой способ записать этот код — объявить объекты ShowData с областью видимости блока, в результате чего они будут удаляться при выходе из области. Another way to write this code is to declare the ShowData objects with block scope, allowing them to be destroyed when they go out of scope:

Читайте также:  Linux только root может сделать это
Оцените статью
Функция Function Обязательный заголовок Required header
выход, _Exit _exit exit, _Exit, _exit