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 process 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
Calling atexit twice (or more) with the same function argument
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 function.|