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

FreeBSD Manual Pages

  
 
  

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 or-
       der listed:

	     1.	  Call all functions registered	with the __cxa_atexit(3) func-
		  tion (which are typically destructors	from  the  loaded  dy-
		  namic	 objects),  and	 the  functions	 registered  with  the
		  atexit(3) function, in the reverse order of their  registra-
		  tion.

	     2.	  Flush	all open output	streams.

	     3.	  Close	all open streams.

       The  _Exit()  function  terminates without calling the functions	regis-
       tered 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
       available  to  a	parent process which has called	a wait(2)-family func-
       tion.

       The C Standard (ISO/IEC 9899:1999 ("ISO C99")) defines  the  values  0,
       EXIT_SUCCESS, and EXIT_FAILURE as possible values of status.  Cooperat-
       ing  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	 avaliable  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  completed 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	13.2			 July 24, 2024			       EXIT(3)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | SEE ALSO | STANDARDS | HISTORY

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

home | help