The
exit();
and
_Exit();
functions terminate a process.
Before termination,
exit();
performs the following operations in the order listed:
Call the functions registered with the
atexit(3)
function, in the reverse order of their registration.
Flush all open output streams.
Close all open streams.
Unlink all files created with the
tmpfile(3)
function.
The
_Exit();
function terminates without calling the functions registered with the
atexit(3)
function.
The
OpenBSD
implementation of
_Exit();
does not flush open output streams or unlink files created with the
tmpfile(3)
function.
However, this behavior is implementation-specific.
Lastly,
exit();
and
_Exit();
call
_exit(2).
Note that typically
_exit(2)
only passes the lower 8 bits of
status
on to the parent, thus negative values have less meaning.