Share via


exit, _Exit, _exit

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at exit, _Exit, _exit.

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

Note

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.

Syntax

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

Parameters

status
Exit status code.

Remarks

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

System::Diagnostics::Process::Kill

See Also

Process and Environment Control
abort
atexit
_cexit, _c_exit
_exec, _wexec Functions
_onexit, _onexit_m
quick_exit
_spawn, _wspawn Functions
system, _wsystem