EXIT(2)

EXIT(2) | System Calls Manual | EXIT(2)

# NAME

`_Exit, _exit` —
terminate the calling process

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <stdlib.h>`

void
`_Exit`(int status);

`#include <unistd.h>`

void
`_exit`(int status);

# DESCRIPTION

The `_Exit`() and `_exit`() functions are equivalent. They each terminate 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 wait(2) call or catches the `SIGCHLD` signal, it is notified of the calling process's termination and the status is set as defined by wait(2).
- The parent process-ID of all of the calling process's existing child processes are set to 1; the initialization process (see the DEFINITIONS section of intro(2)) 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” 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 process group.
- 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 revoked.

Most C programs call the library routine exit(3), which flushes buffers, closes streams, unlinks temporary files, etc., before calling `_exit`().

# RETURN VALUES

`_Exit`() and `_exit`() can never return.

# SEE ALSO

fork(2), sigaction(2), wait(2), exit(3)

# STANDARDS

The `_exit`() function conforms to IEEE Std 1003.1-1990 (“POSIX.1”). The `_Exit`() function conforms to ISO/IEC 9899:1999 (“ISO C99”).

April 23, 2002 | NetBSD 9.0