EXITS(2) EXITS(2) NAME exits, atexit, atexitdont - terminate process, process cleanup SYNOPSIS 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. 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, which is useful after a fork(2) to avoid conflicting calls of an exit function SEE ALSO fork(2), wait(2) Page 1 Plan 9 (printed 12/21/24)