GNU C Library (libc) Programming Guide - Termination Internals


25.6.5 Termination Internals

The _exit function is the primitive used for process termination by exit. It is declared in the header file unistd.h.

— Function: void _exit (int status)

The _exit function is the primitive for causing a process to terminate with status status. Calling this function does not execute cleanup functions registered with atexit or on_exit.

— Function: void _Exit (int status)

The _Exit function is the ISO C equivalent to _exit. The ISO C committee members were not sure whether the definitions of _exit and _Exit were compatible so they have not used the POSIX name.

This function was introduced in ISO C99 and is declared in stdlib.h.

When a process terminates for any reason—either because the program terminates, or as a result of a signal—the following things happen:

  • All open file descriptors in the process are closed. See Low-Level I/O. Note that streams are not flushed automatically when the process terminates; see I/O on Streams.
  • A process exit status is saved to be reported back to the parent process via wait or waitpid; see Process Completion. If the program exited, this status includes as its low-order 8 bits the program exit status.
  • Any child processes of the process being terminated are assigned a new parent process. (On most systems, including GNU, this is the init process, with process ID 1.)
  • A SIGCHLD signal is sent to the parent process.
  • If the process is a session leader that has a controlling terminal, then a SIGHUP signal is sent to each process in the foreground job, and the controlling terminal is disassociated from that session. See Job Control.
  • If termination of a process causes a process group to become orphaned, and any member of that process group is stopped, then a SIGHUP signal and a SIGCONT signal are sent to each process in the group. See Job Control.

Published under the terms of the GNU General Public License Design by Interspire

AltStyle によって変換されたページ (->オリジナル) /