The exit and _exit functions terminate the calling process. exit calls, in last-in-first-out (LIFO) order, the functions registered by atexit and _onexit, then flushes all file buffers before terminating the process. _exit terminates the process without processing atexit or _onexit or flushing stream buffers. The status value is typically set to 0 to indicate a normal exit and set to some other value to indicate an error.
Although the exit and _exit calls do not return a value, the low-order byte of status is made available to the waiting calling process, if one exists, after the calling process exits. The status value is available to the operating-system batch command ERRORLEVEL and is represented by one of two constants: EXIT_SUCCESS, which represents a value of 0, or EXIT_FAILURE, which represents a value of 1. The behavior of exit, _exit, _cexit, and _c_exit is as follows.
Function Description
exit Performs complete C library termination procedures, terminates the process, and exits with the supplied status code.
_exit Performs “quick” C library termination procedures, terminates the process, and exits with the supplied status code.
_cexit Performs complete C library termination procedures and returns to the caller, but does not terminate the process.
_c_exit Performs “quick” C library termination procedures and returns to the caller, but does not terminate the process.
Example
/* EXITER.C: This program prompts the user for a yes
* or no and returns an exit code of 1 if the
* user answers Y or y; otherwise it returns 0. The
* error code could be tested in a batch file.
*/