Зарегистрировать функцию, которая будет вызвана во время завершения программы
#include <stdlib.h>int atexit( register void (*func)( void ) );
void func( void );
libc
Функция atexit() регистрирует функцию, вызывающуюся при нормальном завершении программы. При регистрации нескольких функций они будут выполняться в порядке LIFO. Нормальное завершение происходит при вызове функции exit() или при возврате из main().
В общей сложности можно зарегистрировать 32
функции с помощью atexit().
![]() | Функции, зарегистрированные с помощью atexit(), не вызываются, если программа завершается при вызове _exit(). |
#include <stdio.h>#include <stdlib.h>void func1( void ){printf( "last.\n" );}void func2( void ){printf( "this " );}void func3( void ){printf( "Do " );}int main( void ){atexit( func1 );atexit( func2 );atexit( func3 );printf( "Do this first.\n" );return (EXIT_SUCCESS);}
Код генерирует следующий вывод:
$ ./a.out Do this first. Do this last.
ANSI, POSIX 1003.1
abort(), _exit(), exit(), main()
Предыдущий раздел: Описание API системной библиотеки