EXIT man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

EXIT(2)								       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 registered
       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 nei‐
		  ther	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 subse‐
		  quently executes wait(), wait3(), waitid(), or waitpid().

	   o	  If the parent process of the calling process is not  execut‐
		  ing  a  wait(), wait3(), waitid(), or waitpid(), and has not
		  set its SA_NOCLDWAIT flag, or set SIGCHLD  to	 SIG_IGN,  the
		  calling process is transformed into a zombie process. A zom‐
		  bie 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 occu‐
		  pies	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 terminates 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 exist‐
		  ing child processes and zombie processes is set to  1.  That
		  is,  these  processes	 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 sem‐
		  val of the specified 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  controlling	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(3C). All open message	queues
		  in  the  process  are	 closed	 as if by appropriate calls to
		  mq_close(3C). 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 acctadm(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 │ Committed		│
       ├────────────────────┼───────────────────┤
       │MT-Level	    │ See below.	│
       ├────────────────────┼───────────────────┤
       │Standard	    │ See standards(5). │
       └────────────────────┴───────────────────┘

       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(3C),   plock(3C),   signal.h(3HEAD),   tmpfile(3C),  wait(3C),
       wait3(3C), waitpid(3C), attributes(5), standards(5)

				  Feb 5, 2008			       EXIT(2)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net