.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" References consulted:
.\"     Linux libc source code
.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\"     386BSD man pages
.\" Modified 1993-04-02, David Metcalfe
.\" Modified 1993-07-25, Rik Faith (faith@cs.unc.edu)
.TH ON_EXIT 3  2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
on_exit \- register a function to be called at normal process termination
.SH SYNOPSIS
.nf
.B #include <stdlib.h>
.PP
.BI "int on_exit(void (*" function ")(int, void *), void *" arg );
.fi
.PP
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.PP
.BR on_exit ():
.nf
    Since glibc 2.19:
        _DEFAULT_SOURCE
    Glibc 2.19 and earlier:
        _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
.BR on_exit ()
function registers the given
.I function
to be
called at normal process termination, whether via
.BR exit (3)
or via return from the program's
.IR main ().
The
.I function
is passed the status argument given to the last call to
.BR exit (3)
and the
.I arg
argument from
.BR on_exit ().
.PP
The same function may be registered multiple times:
it is called once for each registration.
.PP
When a child process is created via
.BR fork (2),
it inherits copies of its parent's registrations.
Upon a successful call to one of the
.BR exec (3)
functions, all registrations are removed.
.SH RETURN VALUE
The
.BR on_exit ()
function returns the value 0 if successful; otherwise
it returns a nonzero value.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR on_exit ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
This function comes from SunOS 4, but is also present in glibc.
It no longer occurs in Solaris (SunOS 5).
Portable application should avoid this function, and use the standard
.BR atexit (3)
instead.
.SH NOTES
By the time
.I function
is executed, stack
.RI ( auto )
variables may already have gone out of scope.
Therefore,
.I arg
should not be a pointer to a stack variable;
it may however be a pointer to a heap variable or a global variable.
.SH SEE ALSO
.BR _exit (2),
.BR atexit (3),
.BR exit (3)
