C Programming/stdlib.h/atexit
atexit (at exit) is a function that is in the C Programming Language to register the given function to be executed at normal process termination, either via exit or via return from the program's main function.
The atexit
function takes, as argument, the reference of the function to be registered for call back. Functions so registered are called in the reverse order of their registration; no arguments are passed.
POSIX Usage
editThe atexit
function is standardized by the POSIX specification.
The prototype of the function is as below:
int atexit(void (*function)(void));
The function returns zero (0) if it completed execution successfully. Non-zero return values signify an error.
POSIX requires that an implementation of atexit
allow at least ATEXIT_MAX (32) such functions to be registered.
Example
editThe following example demonstrates the use of the atexit
function.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void end(void) {
printf("[ DONE ]\n");
}
int main(){
long ret;
ret = sysconf(_SC_ATEXIT_MAX);
printf("ATEXIT_MAX = %ld\n", ret);
if( atexit(end) != 0 ) {
perror("Unable to set exit function\n");
return EXIT_FAILURE;
}
printf( "About to quit... " );
return EXIT_SUCCESS;
}
References
editISO/IEC 9899:1999 specification (PDF). p. 315, ยง 7.20.4.2.