Spec-Zone.ru › C

atexit

Определено в заголовочном файле <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)

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/program/atexit

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API