_onexit
, _onexit_m
Registra una rutina que se llama a la hora de salida.
Sintaxis
_onexit_t _onexit(
_onexit_t function
);
_onexit_t_m _onexit_m(
_onexit_t_m function
);
Parámetros
function
Puntero a una función a la que se va a llamar al salir.
Valor devuelto
_onexit
devuelve un puntero a la función si se ejecuta correctamente o NULL
si no hay ningún espacio para almacenar el puntero de función.
Comentarios
A la función _onexit
se pasa la dirección de una función (function
) que se llamará cuando el programa finalice con normalidad. Las llamadas sucesivas a _onexit
crean un registro de las funciones que se ejecutan por orden de último en entrar, primero en salir (LIFO). Las funciones pasadas a _onexit
no pueden tomar parámetros.
En el caso _onexit
de que se llame desde dentro de un archivo DLL, rutinas registradas con _onexit
la ejecución cuando se descarga el archivo DLL, después DllMain
de llamar a con DLL_PROCESS_DETACH
.
_onexit
es una extensión de Microsoft. Para la portabilidad de ANSI, use atexit
. La versión _onexit_m
de la función sirve para el modo mixto.
Requisitos
Routine | Encabezado necesario |
---|---|
_onexit |
<stdlib.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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.
Consulte también
Control de procesos y entornos
atexit
exit
, , _Exit
, _exit
__dllonexit