Defined in header <stdlib.h> | ||
---|---|---|
int atexit( void (*func)(void) ); |
Registers the function pointed to by func
to be called on normal program termination (via exit()
or returning from main()
). The functions will be called in reverse order they were registered, i.e. the function registered last will be executed first.
The same function may be registered more than once.
atexit
is thread-safe: calling the function from several threads does not induce a data race.
The implementation is guaranteed to support the registration of at least 32
functions. The exact limit is implementation-defined.
func | - | pointer to a function to be called on normal program termination |
0
if the registration succeeds, nonzero value otherwise.
#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
Output:
f2 f2 f1
(C11) | registers a function to be called on quick_exit invocation (function) |
C++ documentation for atexit |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/program/atexit