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