exit, _Exit, _exit

 

Terminates the calling process. The exit function terminates it after cleanup; _exit and _Exit terminate it immediately.

System_CAPS_noteNote

Do not use this method to shut down a Universal Windows Platform (UWP) app or a Windows 8.x Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Windows 8.x Store app are not permitted. For more information about Windows 8 and 8.1 apps, see App lifecycle. For more information about Windows 10 apps, see How-to guides for Windows 10 apps.

void exit( 
   int const status 
);
void _Exit( 
   int const status 
);
void _exit( 
   int const status 
);

status

Exit status code.

The exit, _Exit and _exit functions terminate the calling process. 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. The _Exit and _exit functions terminate the process without destroying thread-local objects or processing atexit or _onexit functions, and without flushing stream buffers.

Although the exit, _Exit and _exit calls do not return a value, the low-order byte of status is made available to the host environment or waiting calling process, if one exists, after the process exits. Typically, the caller sets the status value to 0 to indicate a normal exit, or to some other value to indicate an error. 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.

The exit, _Exit, _exit, quick_exit, _cexit, and _c_exit functions behave as follows.

Function

Description

exit

Performs complete C library termination procedures, terminates the process, and provides the supplied status code to the host environment.

_Exit

Performs minimal C library termination procedures, terminates the process, and provides the supplied status code to the host environment.

_exit

Performs minimal C library termination procedures, terminates the process, and provides the supplied status code to the host environment.

quick_exit

Performs quick C library termination procedures, terminates the process, and provides the supplied status code to the host environment.

_cexit

Performs complete C library termination procedures and returns to the caller. Does not terminate the process.

_c_exit

Performs minimal C library termination procedures and returns to the caller. Does not terminate the process.

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 defined in a function where the object is not declared to be static. A temporary object is an object that's created by the compiler. To destroy an automatic object before you call exit, _Exit, or _exit, explicitly call the destructor for the object, as follows:

myObject.myClass::~myClass();

Do not use DLL_PROCESS_ATTACH to call exit from DllMain. If you want to exit the DLLMain function, return FALSE from DLL_PROCESS_ATTACH.

Requirements

Function

Required header

exit, _Exit, _exit

<process.h> or <stdlib.h>

For additional compatibility information, see Compatibility.

Example

// 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 Equivalent

Show: