Namespaces
Variants

atexit

From cppreference.net
Определено в заголовочном файле <stdlib.h>
int atexit ( void ( * func ) ( void ) ) ;

Регистрирует функцию, на которую указывает func , для вызова при нормальном завершении программы (через exit() или возврат из main() ). Функции будут вызываться в обратном порядке их регистрации, т.е. последняя зарегистрированная функция будет выполнена первой.

Одна и та же функция может быть зарегистрирована более одного раза.

Реализация гарантированно поддерживает регистрацию как минимум 32 функций. Точный предел определяется реализацией.

Содержание

Параметры

func - указатель на функцию, которая будет вызвана при нормальном завершении программы

Возвращаемое значение

0 если регистрация прошла успешно, в противном случае - ненулевое значение.

Пример

#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

Вывод:

f2
f2
f1

Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.22.4.2 Функция atexit (стр: 255)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.22.4.2 Функция atexit (стр: 350)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.20.4.2 Функция atexit (стр: 315)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 7.10.4.2 Функция atexit (стр: 156)

Смотрите также

регистрирует функцию для вызова при quick_exit вызове
(функция)
C++ documentation для atexit