Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
EXIT(3) 		     Library Functions Manual			 EXIT(3)

NAME
     exit, _Exit -- perform normal program termination

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <stdlib.h>

     void
     exit(int status);

     void
     _Exit(int status);

DESCRIPTION
     The exit() and _Exit() functions terminate a process.

     Before  termination,  exit()  performs the following functions in the order
     listed:

	   1.	Call all functions registered with the __cxa_atexit(3)	function
		(which	are  typically	destructors  from the loaded dynamic ob-
		jects), and the functions registered with  the	atexit(3)  func-
		tion, in the reverse order of their registration.

	   2.	Flush all open output streams.

	   3.	Close all open streams.

     The  _Exit()  function  terminates without calling the functions registered
     with the atexit(3) function, and may or may not perform the  other  actions
     listed.   The  FreeBSD implementation of the _Exit() function does not call
     destructors registered with __cxa_atexit(3), does not  flush  buffers,  and
     does not close streams.

     Both  functions make the low-order eight bits of the status argument avail-
     able to a parent process which has called a wait(2)-family function.

     The C Standard (ISO/IEC  9899:1999  ("ISO	C99"))	defines  the  values  0,
     EXIT_SUCCESS,  and  EXIT_FAILURE as possible values of status.  Cooperating
     processes may use other values; in a program which might  be  called  by  a
     mail  transfer  agent,  the  values described in sysexits(3) may be used to
     provide more information to the parent process.

     The complete status value is available as si_status member of the siginfo_t
     structure, to the wait6(2) and sigwaitinfo(2) callers, and  SIGCHLD  signal
     handlers.

     Calls  to	the exit() function are serialized.  All functions registered by
     atexit(3) are executed in the first thread that called exit.  If any  other
     thread  of the process calls exit before all registered functions have com-
     pleted or before the process terminates, the thread is  blocked  until  the
     process  terminates.  The exit status of the process is the status argument
     of the first exit call which thread proceeds the atexit handlers.

     Note that exit() does nothing to  prevent	bottomless  recursion  should  a
     function  registered  using  atexit(3)  itself call exit().  Such functions
     must call _Exit() instead (although this has other effects  as  well  which
     may not be desired).

RETURN VALUES
     The exit() and _Exit() functions never return.

SEE ALSO
     _exit(2),	 abort2(2),   wait(2),	at_quick_exit(3),  atexit(3),  intro(3),
     quick_exit(3), sysexits(3), tmpfile(3)

STANDARDS
     The exit() and _Exit() functions conform to ISO/IEC 9899:1999 ("ISO C99").

HISTORY
     The exit() function appeared in Version 1 AT&T UNIX.

FreeBSD 15.1			  July 24, 2024 			 EXIT(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=exit&sektion=3&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help