Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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 _onexit, _onexit_m.
Registers a routine to be called at exit time.
Syntax
_onexit_t _onexit(
_onexit_t function
);
_onexit_t_m _onexit_m(
_onexit_t_m function
);
Parameters
function
Pointer to a function to be called at exit.
Return Value
_onexit
returns a pointer to the function if successful or NULL
if there is no space to store the function pointer.
Remarks
The _onexit
function is passed the address of a function (function
) to be called when the program terminates normally. Successive calls to _onexit
create a register of functions that are executed in LIFO (last-in-first-out) order. The functions passed to _onexit
cannot take parameters.
In the case when _onexit
is called from within a DLL, routines registered with _onexit
run on a DLL's unloading after DllMain
is called with DLL_PROCESS_DETACH.
_onexit
is a Microsoft extension. For ANSI portability, use atexit. The _onexit_m
version of the function is for mixed mode use.
Requirements
Routine | Required header |
---|---|
_onexit |
<stdlib.h> |
For more compatibility information, see Compatibility in the Introduction.
Example
// crt_onexit.c
#include <stdlib.h>
#include <stdio.h>
/* Prototypes */
int fn1(void), fn2(void), fn3(void), fn4 (void);
int main( void )
{
_onexit( fn1 );
_onexit( fn2 );
_onexit( fn3 );
_onexit( fn4 );
printf( "This is executed first.\n" );
}
int fn1()
{
printf( "next.\n" );
return 0;
}
int fn2()
{
printf( "executed " );
return 0;
}
int fn3()
{
printf( "is " );
return 0;
}
int fn4()
{
printf( "This " );
return 0;
}
Output
This is executed first.
This is executed next.
.NET Framework Equivalent
System::Diagnostics::Process::Exited
See Also
Process and Environment Control
atexit
exit, _Exit, _exit
__dllonexit