EXIT(2) BSD Programmer's Manual EXIT(2) NNAAMMEE __eexxiitt - terminate the calling process SSYYNNOOPPSSIISS ##iinncclluuddee <<uunniissttdd..hh>> _v_o_i_d __eexxiitt(_i_n_t _s_t_a_t_u_s); DDEESSCCRRIIPPTTIIOONN The __eexxiitt() function terminates a process with the following conse- quences: ++oo All of the descriptors open in the calling process are closed. This may entail delays, for example, waiting for output to drain; a pro- cess in this state may not be killed, as it is already dying. ++oo If the parent process of the calling process has an outstanding wait call or catches the SIGCHLD signal, it is notified of the calling process's termination and the _s_t_a_t_u_s is set as defined by wait(2). ++oo The parent process-ID of all of the calling process's existing child processes are set to 1; the initialization process (see the DEFINI- TIONS section of intro(2)) inherits each of these processes. ++oo If the termination of the process causes any process group to become orphaned (usually because the parents of all members of the group have now exited; see ``orphaned process group'' in intro(2)), and if any member of the orphaned group is stopped, the SIGHUP signal and the SIGCONT signal are sent to all members of the newly-orphaned pro- cess group. ++oo If the process is a controlling process (see intro(2)), the SIGHUP signal is sent to the foreground process group of the controlling terminal, and all current access to the controlling terminal is re- voked. Most C programs call the library routine exit(3), which flushes buffers, closes streams, unlinks temporary files, etc., before calling __eexxiitt(). RREETTUURRNN VVAALLUUEE __eexxiitt() can never return. SSEEEE AALLSSOO fork(2), sigvec(2), wait(2), exit(3) SSTTAANNDDAARRDDSS The __eexxiitt function is defined by IEEE Std1003.1-1988 (``POSIX''). 4th Berkeley Distribution June 4, 1993 1