Spec-Zone.ru › C

atexit

Defined in header <stdlib.h>
int atexit( void (*func)(void) );

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

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

atexit является потокобезопасной: вызов функции из нескольких потоков не приводит к гонке данных.

Реализация гарантирует поддержку регистрации как минимум 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/w/c/program/atexit

Spec-Zone.ru

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