| ATEXIT(3) | Library Functions Manual | ATEXIT(3) |
NAME
atexit — register
a function to be called on exit
SYNOPSIS
#include
<stdlib.h>
int
atexit(void
(*function)(void));
int
atexit_b(void
(^function)(void));
DESCRIPTION
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.
RETURN VALUES
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.
ERRORS
- [
ENOMEM] - No memory was available to add the function to the list. The existing list of functions is unmodified.
SEE ALSO
STANDARDS
The atexit() function conforms to
ISO/IEC 9899:1990
(“ISO C90”).
| September 6, 2002 | macOS 26.4 |