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/atexit.c Page 1 Plan 9 (printed 11/22/24) EXITS(2) EXITS(2) SEE ALSO fork(2), wait(2) Page 2 Plan 9 (printed 11/22/24)