Namespaces
Variants

atexit

From cppreference.net
Definido en el encabezado <stdlib.h>
int atexit ( void ( * func ) ( void ) ) ;

Registra la función apuntada por func para ser llamada en la terminación normal del programa (mediante exit() o retornando desde main() ). Las funciones serán llamadas en orden inverso al que fueron registradas, es decir, la función registrada al último será ejecutada primero.

La misma función puede registrarse más de una vez.

La implementación garantiza soportar el registro de al menos 32 funciones. El límite exacto está definido por la implementación.

Contenidos

Parámetros

func - puntero a una función que será llamada en la terminación normal del programa

Valor de retorno

0 si el registro tiene éxito, valor distinto de cero en caso contrario.

Ejemplo

#include <stdlib.h>
#include <stdio.h>
void f1(void)
{
    puts("f1");
}
void f2(void)
{
    puts("f2");
}
int main(void)
{
    if ( ! atexit(f1) && ! atexit(f2) && ! atexit(f2) )
        return EXIT_SUCCESS ;
    // atexit registration failed
    return EXIT_FAILURE ;
}   // <- if registration was successful calls f2, f2, f1

Salida:

f2
f2
f1

Referencias

  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.22.4.2 La función atexit (p: 255)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.22.4.2 La función atexit (p: 350)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.20.4.2 La función atexit (p: 315)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 7.10.4.2 La función atexit (p: 156)

Véase también

registra una función para ser llamada en quick_exit invocación
(función)