terminates a process with the following consequences:
- All of the descriptors open in the calling process are closed.
This may entail delays, for example, waiting for output to drain;
a process in this state may not be killed, as it is already dying.
- If the parent process of the calling process has an outstanding
or catches the
it is notified of the calling process's termination and
is set as defined by
- The parent process-ID of all of the calling process's existing child
processes are set to the process-ID of the calling process's reaper;
the reaper (normally the initialization process)
inherits each of these processes
- 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"
and if any member of the orphaned group is stopped,
signal and the
signal are sent to all members of the newly-orphaned process group.
- If the process is a controlling process (see
signal is sent to the foreground process group of the controlling terminal,
and all current access to the controlling terminal is revoked.
Most C programs call the library routine
which flushes buffers, closes streams, unlinks temporary files, etc.,