EXITS(2) EXITS(2)
NAME
exits, _exits, atexit, atexitdont, terminate - terminate
process, process cleanup
SYNOPSIS
#include <u.h>
#include <libc.h>
void _exits(char *msg)
void exits(char *msg)
int atexit(void(*)(void))
void atexitdont(void(*)(void))
DESCRIPTION
Exits is the conventional way to terminate a process.
_Exits is the underlying system call. They can never
return.
Msg conventionally includes a brief (maximum length 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 pro-
cess id of the exiting process, when the parent does a
wait(2).
Before calling _exits with msg as an argument, exits calls
in reverse order all the functions recorded by atexit.
Atexit records fn as a function to be called by 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, exits only
calls those atexit-registered functions that were registered
by the same process as that calling exits.
Calling atexit twice (or more) with the same function argu-
ment causes exits to invoke the function twice (or more).
There is a limit to the number of exit functions that will
be recorded; atexit returns 0 if that limit has been
reached.
Atexitdont cancels a previous registration of an exit func-
tion.
SOURCE
/sys/src/libc/port/exits.c
/sys/src/libc/port/atexit.c
Page 1 Plan 9 (printed 10/25/25)
EXITS(2) EXITS(2)
SEE ALSO
fork(2), wait(2)
Page 2 Plan 9 (printed 10/25/25)