atexit()

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

Прототип:

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

Аргументы:

func
A pointer to the function you want to be called when the program terminates normally. This function has no arguments and doesn't return a value; its prototype should be:
void func( void );

Библиотека:

libc

Описание:

The atexit() function registers a function to be called when the program terminates normally. If you register more than one function with atexit(), they're executed in a “last-in, first-out” order. Normal termination occurs either by a call to exit() or a return from main().

You can register a total of 32 functions with atexit().


Note: The functions registered with atexit() aren't called when the program terminates with a call to _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 системной библиотеки