ATEXIT(3) | Library Functions Manual | ATEXIT(3) |
atexit
— register
a function to be called on exit
#include
<stdlib.h>
int
atexit
(void
(*function)(void));
int
atexit_b
(void
(^function)(void));
The
atexit
()
function registers the given function to be called at
program exit, whether via exit(3) or via
return from the program's
main
().
Functions so registered are called in reverse order; no arguments are
passed.
If the provided function is
located in a library that has been dynamically loaded (e.g. by
dlopen
()),
it will be called when the library is unloaded (due to a call to
dlclose
())
or at program exit.
The
atexit_b
()
function is like atexit
() except the callback is a
block pointer instead of a function pointer.
Block_copy
()
function (defined in
<Blocks.h>
) is used by
atexit_b
() to make a copy of the block, especially for
the case when a stack-based block might go out of scope when the subroutine
returns.These functions must not call
exit
(); if it
should be necessary to terminate the process while in such a function, the
_exit(2) function should be used.
(Alternatively, the function may cause abnormal process termination, for
example by calling abort(3).)
At least 32 functions can always be registered, and more are allowed as long as sufficient memory can be allocated.
The atexit
() and
atexit_b
() functions return the value 0 if
successful; otherwise the value -1 is returned and the global
variable errno is set to indicate the error.
ENOMEM
]The atexit
() function conforms to
ISO/IEC 9899:1990
(“ISO C90”).
September 6, 2002 | macOS 15.0 |