Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

_exit(2) [netbsd man page]

EXIT(2) 						      BSD 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: o 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. o 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). o 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. o 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. o If the process is a controlling process (see intro(2)), the SIGHUP signal is sent to the foreground process group of the controlling ter- minal, 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 ISO/IEC 9945-1:1990 (``POSIX.1''). The _Exit() function conforms to ISO/IEC 9899:1999 (``ISO C99''). BSD
April 23, 2002 BSD

Check Out this Related Man Page

exit(2) 							   System Calls 							   exit(2)

NAME
exit, _Exit, _exit - terminate process SYNOPSIS
#include <stdlib.h> void exit(int status); void _Exit(int status); #include <unistd.h> void _exit(int status); DESCRIPTION
The exit() function first calls all functions registered by atexit(3C), in the reverse order of their registration, except that a function is called after any previously registered functions that had already been called at the time it was registered. Each function is called as many times as it was registered. If, during the call to any such function, a call to the longjmp(3C) function is made that would terminate the call to the registered function, the behavior is undefined. If a function registered by a call to atexit(3C) fails to return, the remaining registered functions are not called and the rest of the exit() processing is not completed. If exit() is called more than once, the effects are undefined. The exit() function then flushes all open streams with unwritten buffered data, closes all open streams, and removes all files created by tmpfile(3C). The _Exit() and _exit() functions are functionally equivalent. They do not call functions registered with atexit(), do not call any regis- tered signal handlers, and do not flush open streams. The _exit(), _Exit(), and exit() functions terminate the calling process with the following consequences: o All of the file descriptors, directory streams, conversion descriptors and message catalogue descriptors open in the calling process are closed. o If the parent process of the calling process is executing a wait(3C), wait3(3C), waitid(2), or waitpid(3C), and has neither set its SA_NOCLDWAIT flag nor set SIGCHLD to SIG_IGN, it is notified of the calling process's termination and the low-order eight bits (that is, bits 0377) of status are made available to it. If the parent is not waiting, the child's status will be made available to it when the parent subsequently executes wait(), wait3(), waitid(), or waitpid(). o If the parent process of the calling process is not executing a wait(), wait3(), waitid(), or waitpid(), and has not set its SA_NOCLD- WAIT flag, or set SIGCHLD to SIG_IGN, the calling process is transformed into a zombie process. A zombie process is an inactive process and it will be deleted at some later time when its parent process executes wait(), wait3(), waitid(), or waitpid(). A zombie process only occupies a slot in the process table; it has no other space allocated either in user or kernel space. The process table slot that it occupies is partially overlaid with time accounting information (see <sys/proc.h>) to be used by the times(2) function. o Termination of a process does not directly terminate its children. The sending of a SIGHUP signal as described below indirectly termi- nates children in some circumstances. o A SIGCHLD will be sent to the parent process. o The parent process ID of all of the calling process's existing child processes and zombie processes is set to 1. That is, these pro- cesses are inherited by the initialization process (see intro(2)). o Each mapped memory object is unmapped. o Each attached shared-memory segment is detached and the value of shm_nattch (see shmget(2)) in the data structure associated with its shared memory ID is decremented by 1. o For each semaphore for which the calling process has set a semadj value (see semop(2)), that value is added to the semval of the spec- ified semaphore. o If the process is a controlling process, the SIGHUP signal will be sent to each process in the foreground process group of the con- trolling terminal belonging to the calling process. o If the process is a controlling process, the controlling terminal associated with the session is disassociated from the session, allowing it to be acquired by a new controlling process. o If the exit of the process causes a process group to become orphaned, and if any member of the newly-orphaned process group is stopped, then a SIGHUP signal followed by a SIGCONT signal will be sent to each process in the newly-orphaned process group. o If the parent process has set its SA_NOCLDWAIT flag, or set SIGCHLD to SIG_IGN, the status will be discarded, and the lifetime of the calling process will end immediately. o If the process has process, text or data locks, an UNLOCK is performed (see plock(3C) and memcntl(2)). o All open named semaphores in the process are closed as if by appropriate calls to sem_close(3RT). All open message queues in the process are closed as if by appropriate calls to mq_close(3RT). Any outstanding asynchronous I/O operations may be cancelled. o An accounting record is written on the accounting file if the system's accounting routine is enabled (see acct(2)). o An extended accounting record is written to the extended process accounting file if the system's extended process accounting facility is enabled (see acctadm(1M)). o If the current process is the last process within its task and if the system's extended task accounting facility is enabled (see acc- tadm(1M)), an extended accounting record is written to the extended task accounting file. RETURN VALUES
These functions do not return. ERRORS
No errors are defined. USAGE
Normally applications should use exit() rather than _exit(). ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ |MT-Level |See below. | +-----------------------------+-----------------------------+ The _exit() and _Exit() functions are Async-Signal-Safe. SEE ALSO
acctadm(1M), intro(2), acct(2), close(2), memcntl(2), semop(2), shmget(2), sigaction(2), times(2), waitid(2), atexit(3C), fclose(3C), mq_close(3RT), plock(3C), signal.h(3HEAD), tmpfile(3C), wait(3C), wait3(3C), waitpid(3C), attributes(5), standards(5) SunOS 5.10 10 Dec 2003 exit(2)
Man Page