.TH EXITS 3
.SH NAME
exits, _exits, exitcode, atexit, atexitdont \- terminate process, process cleanup
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.nf
.B
void	_exits(char *msg)
.B
void	exits(char *msg)
.PP
.B
int	exitcode(char *msg)
.PP
.B
int	atexit(void(*)(void))
.PP
.B
void	atexitdont(void(*)(void))
.fi
.SH DESCRIPTION
.I Exits
is the conventional way to terminate a process.
.I _Exits
also terminates a process but does not call the registered
.I atexit
handlers
.RI ( q.v. ).
They
can never return.
.PP
.I Msg
conventionally includes a brief (maximum length
.BR ERRLEN )
explanation of the reason for
exiting, or a null pointer or empty string to indicate normal termination.
The string is passed to the parent process, prefixed by the name and process
id of the exiting process, when the parent does a
.IR wait (3).
.PP
Before calling
.I _exits
with
.I msg
as an argument,
.I exits
calls in reverse order all the functions
recorded by
.IR atexit .
.PP
.I Atexit
records
.I fn
as a function to be called by
.IR exits .
It returns zero if it failed,
nonzero otherwise.
A typical use is to register a cleanup routine for an I/O package.
To simplify programs that fork or share memory,
.I exits
only calls those
.IR atexit -registered
functions that were registered by the same
process as that calling
.IR exits .
.PP
Calling
.I atexit
twice (or more) with the same function argument causes
.I exits
to invoke the function twice (or more).
.PP
There is a limit to the number of exit functions
that will be recorded;
.I atexit
returns 0 if that limit has been reached.
.PP
.I Atexitdont
cancels a previous registration of an exit function.
.SH SOURCE
.B \*9/src/lib9/atexit.c
.br
.B \*9/src/lib9/_exits.c
.SH "SEE ALSO"
.IR fork (2),
.IR wait (3)
.SH BUGS
Because of limitations of Unix, the exit status of a
process can only be an 8-bit integer.
.I Exits
and
.I _exits
treat null or empty exit status as exit code 0
and call 
.I exitcode
to translate any other string into an exit code.
By default, the library provides an
.I exitcode
that maps all messages to 1.
Applications may find it useful to provide their own 
implementations of
.I exitcode .
.PP
Exit codes 97 through 99 are used by the thread library to signal
internal synchronization errors between the main program
and a proxy process that implements backgrounding.
.PP
To avoid name conflicts with the underlying system,
.I atexit
and
.I atexitdont
are preprocessor macros defined as
.I p9atexit
and
.IR p9atexitdont ;
see
.IR intro (3).
