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)
См. также
|
(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