_cexit
, _c_exit
Performs cleanup operations and returns without terminating the process.
Syntax
void _cexit( void );
void _c_exit( void );
Remarks
The _cexit
function calls, in last-in, first-out (LIFO) order, the functions registered by atexit
and _onexit
. Then _cexit
flushes all I/O buffers and closes all open streams before returning. _c_exit
is the same as _exit
but returns to the calling process without processing atexit
or _onexit
or flushing stream buffers. The behavior of exit
, _exit
, _cexit
, and _c_exit
is shown in the following table.
Function | Behavior |
---|---|
exit |
Performs complete C library termination procedures, terminates process, and exits with supplied status code. |
_exit |
Performs quick C library termination procedures, terminates process, and exits with supplied status code. |
_cexit |
Performs complete C library termination procedures and returns to caller, but doesn't terminate process. |
_c_exit |
Performs quick C library termination procedures and returns to caller, but doesn't terminate process. |
When you call the _cexit
or _c_exit
functions, the destructors for any temporary or automatic objects that exist at the time of the call aren't called. An automatic object is an object that is defined in a function where the object isn't declared to be static. A temporary object is an object created by the compiler. To destroy an automatic object before calling _cexit
or _c_exit
, explicitly call the destructor for the object, as follows:
myObject.myClass::~myClass( );
By default, this function's global state is scoped to the application. To change this behavior, see Global state in the CRT.
Requirements
Routine | Required header |
---|---|
_cexit |
<process.h> |
_c_exit |
<process.h> |
For more compatibility information, see Compatibility.
See also
Process and environment control
abort
atexit
_exec
, _wexec
functions
exit
, _Exit
, _exit
_onexit
, _onexit_m
_spawn
, _wspawn
functions
system
, _wsystem