xref: /freebsd/lib/libc/stdlib/exit.3 (revision 3f3ec4b99f79d32a0bf15495559ca9883bd751f2)
158f0484fSRodney W. Grimes.\" Copyright (c) 1990, 1991, 1993
258f0484fSRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
358f0484fSRodney W. Grimes.\"
458f0484fSRodney W. Grimes.\" This code is derived from software contributed to Berkeley by
558f0484fSRodney W. Grimes.\" the American National Standards Committee X3, on Information
658f0484fSRodney W. Grimes.\" Processing Systems.
758f0484fSRodney W. Grimes.\"
858f0484fSRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
958f0484fSRodney W. Grimes.\" modification, are permitted provided that the following conditions
1058f0484fSRodney W. Grimes.\" are met:
1158f0484fSRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
1258f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
1358f0484fSRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
1458f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
1558f0484fSRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
163fb3b97cSEd Maste.\" 3. Neither the name of the University nor the names of its contributors
1758f0484fSRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
1858f0484fSRodney W. Grimes.\"    without specific prior written permission.
1958f0484fSRodney W. Grimes.\"
2058f0484fSRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2158f0484fSRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2258f0484fSRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2358f0484fSRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2458f0484fSRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2558f0484fSRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2658f0484fSRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2758f0484fSRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2858f0484fSRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2958f0484fSRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3058f0484fSRodney W. Grimes.\" SUCH DAMAGE.
3158f0484fSRodney W. Grimes.\"
32*3f3ec4b9SKonstantin Belousov.Dd July 24, 2024
3358f0484fSRodney W. Grimes.Dt EXIT 3
3458f0484fSRodney W. Grimes.Os
3558f0484fSRodney W. Grimes.Sh NAME
36eca67d51SGarrett Wollman.Nm exit , _Exit
3758f0484fSRodney W. Grimes.Nd perform normal program termination
3825bb73e0SAlexey Zelkin.Sh LIBRARY
3925bb73e0SAlexey Zelkin.Lb libc
4058f0484fSRodney W. Grimes.Sh SYNOPSIS
418aefde06SJeroen Ruigrok van der Werven.In stdlib.h
4258f0484fSRodney W. Grimes.Ft void
4358f0484fSRodney W. Grimes.Fn exit "int status"
44eca67d51SGarrett Wollman.Ft void
45eca67d51SGarrett Wollman.Fn _Exit "int status"
4658f0484fSRodney W. Grimes.Sh DESCRIPTION
47eca67d51SGarrett WollmanThe
48eca67d51SGarrett Wollman.Fn exit
49eca67d51SGarrett Wollmanand
50eca67d51SGarrett Wollman.Fn _Exit
51eca67d51SGarrett Wollmanfunctions terminate a process.
5258f0484fSRodney W. Grimes.Pp
53eca67d51SGarrett WollmanBefore termination,
54eca67d51SGarrett Wollman.Fn exit
55eca67d51SGarrett Wollmanperforms the following functions in the order listed:
5658f0484fSRodney W. Grimes.Bl -enum -offset indent
5758f0484fSRodney W. Grimes.It
58ee62fb2eSKonstantin BelousovCall all functions registered with the
59ee62fb2eSKonstantin Belousov.Xr __cxa_atexit 3
60ee62fb2eSKonstantin Belousovfunction
61ee62fb2eSKonstantin Belousov(which are typically destructors from the loaded dynamic objects),
62ee62fb2eSKonstantin Belousovand the functions registered with the
6358f0484fSRodney W. Grimes.Xr atexit 3
6458f0484fSRodney W. Grimesfunction, in the reverse order of their registration.
6558f0484fSRodney W. Grimes.It
6658f0484fSRodney W. GrimesFlush all open output streams.
6758f0484fSRodney W. Grimes.It
6858f0484fSRodney W. GrimesClose all open streams.
6958f0484fSRodney W. Grimes.El
704567abc2SJoerg Wunsch.Pp
71eca67d51SGarrett WollmanThe
72eca67d51SGarrett Wollman.Fn _Exit
73eca67d51SGarrett Wollmanfunction terminates without calling the functions registered with the
74eca67d51SGarrett Wollman.Xr atexit 3
75eca67d51SGarrett Wollmanfunction, and may or may not perform the other actions listed.
76ee62fb2eSKonstantin BelousovThe
77ee62fb2eSKonstantin Belousov.Fx
78ee62fb2eSKonstantin Belousovimplementation of the
79ee62fb2eSKonstantin Belousov.Fn _Exit
80ee62fb2eSKonstantin Belousovfunction does not call destructors registered with
81ee62fb2eSKonstantin Belousov.Xr __cxa_atexit 3 ,
82ee62fb2eSKonstantin Belousovdoes not flush buffers, and does not close streams.
83ee62fb2eSKonstantin Belousov.Pp
84eca67d51SGarrett WollmanBoth functions make the low-order eight bits of the
85eca67d51SGarrett Wollman.Fa status
86eca67d51SGarrett Wollmanargument available to a parent process which has called a
87eca67d51SGarrett Wollman.Xr wait 2 Ns -family
88eca67d51SGarrett Wollmanfunction.
89eca67d51SGarrett Wollman.Pp
90eca67d51SGarrett WollmanThe C Standard
91eca67d51SGarrett Wollman.Pq St -isoC-99
92eca67d51SGarrett Wollmandefines the values
93eca67d51SGarrett Wollman.Li 0 ,
94eca67d51SGarrett Wollman.Dv EXIT_SUCCESS ,
95cc5aedfbSTim Vanderhoekand
96eca67d51SGarrett Wollman.Dv EXIT_FAILURE
97eca67d51SGarrett Wollmanas possible values of
98eca67d51SGarrett Wollman.Fa status .
99eca67d51SGarrett WollmanCooperating processes may use other values;
100eca67d51SGarrett Wollmanin a program which might be called by a mail transfer agent, the
101959d6c24SRuslan Ermilovvalues described in
102eca67d51SGarrett Wollman.Xr sysexits 3
103eca67d51SGarrett Wollmanmay be used to provide more information to the parent process.
1042c5db8c6SGarrett Wollman.Pp
105*3f3ec4b9SKonstantin BelousovCalls to the
106*3f3ec4b9SKonstantin Belousov.Fn exit
107*3f3ec4b9SKonstantin Belousovfunction are serialized.
108*3f3ec4b9SKonstantin BelousovAll functions registered by
109*3f3ec4b9SKonstantin Belousov.Xr atexit 3
110*3f3ec4b9SKonstantin Belousovare executed in the first thread that called
111*3f3ec4b9SKonstantin Belousov.Nm exit .
112*3f3ec4b9SKonstantin BelousovIf any other thread of the process calls
113*3f3ec4b9SKonstantin Belousov.Nm exit
114*3f3ec4b9SKonstantin Belousovbefore all registered functions have completed or before the process
115*3f3ec4b9SKonstantin Belousovterminates, the thread is blocked until the process terminates.
116*3f3ec4b9SKonstantin BelousovThe exit status of the process is the
117*3f3ec4b9SKonstantin Belousov.Fa status
118*3f3ec4b9SKonstantin Belousovargument of the first
119*3f3ec4b9SKonstantin Belousov.Nm exit
120*3f3ec4b9SKonstantin Belousovcall which thread proceeds the atexit handlers.
121*3f3ec4b9SKonstantin Belousov.Pp
1222c5db8c6SGarrett WollmanNote that
1232c5db8c6SGarrett Wollman.Fn exit
1242c5db8c6SGarrett Wollmandoes nothing to prevent bottomless recursion should a function registered
1252c5db8c6SGarrett Wollmanusing
1262c5db8c6SGarrett Wollman.Xr atexit 3
1272c5db8c6SGarrett Wollmanitself call
1282c5db8c6SGarrett Wollman.Fn exit .
129eca67d51SGarrett WollmanSuch functions must call
130eca67d51SGarrett Wollman.Fn _Exit
1312c5db8c6SGarrett Wollmaninstead (although this has other effects as well which may not be desired).
13258f0484fSRodney W. Grimes.Sh RETURN VALUES
13358f0484fSRodney W. GrimesThe
13458f0484fSRodney W. Grimes.Fn exit
135eca67d51SGarrett Wollmanand
136eca67d51SGarrett Wollman.Fn _Exit
137eca67d51SGarrett Wollmanfunctions
138eca67d51SGarrett Wollmannever return.
13958f0484fSRodney W. Grimes.Sh SEE ALSO
140c8d40b7dSRuslan Ermilov.Xr _exit 2 ,
1414c72d794SEric van Gyzen.Xr abort2 2 ,
1421c85060aSRuslan Ermilov.Xr wait 2 ,
1430a31efe0SDavid Chisnall.Xr at_quick_exit 3 ,
1440aee91e1SChristian Brueffer.Xr atexit 3 ,
14558f0484fSRodney W. Grimes.Xr intro 3 ,
1460a31efe0SDavid Chisnall.Xr quick_exit 3 ,
14775141cc9SWolfram Schneider.Xr sysexits 3 ,
14875141cc9SWolfram Schneider.Xr tmpfile 3
14958f0484fSRodney W. Grimes.Sh STANDARDS
15058f0484fSRodney W. GrimesThe
15158f0484fSRodney W. Grimes.Fn exit
152eca67d51SGarrett Wollmanand
153eca67d51SGarrett Wollman.Fn _Exit
154eca67d51SGarrett Wollmanfunctions conform to
155eca67d51SGarrett Wollman.St -isoC-99 .
156bbf6efd7SSergio Carlavilla Delgado.Sh HISTORY
157bbf6efd7SSergio Carlavilla DelgadoThe
158bbf6efd7SSergio Carlavilla Delgado.Fn exit
159bbf6efd7SSergio Carlavilla Delgadofunction appeared in
160bbf6efd7SSergio Carlavilla Delgado.At v1 .
161