atexit()

Зарегистрировать функцию, которая будет вызвана во время завершения программы

Прототип:

#include <stdlib.h>
int atexit( register void (*func)( void ) );

Аргументы:

func
Указатель на функцию, которую нужно вызвать при нормальном завершении программы. Данная функция не должна иметь аргументов и возвращать значение; она должна иметь следующий прототип:
void func( void );

Библиотека:

libc

Описание:

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

В общей сложности можно зарегистрировать 32 функции с помощью atexit().


Caution: Функции, зарегистрированные с помощью atexit(), не вызываются, если программа завершается при вызове _exit().

Возвращаемое значение:

0
Успешное завершение.
≠0
Возникла ошибка.

Примеры:

#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 системной библиотеки