xref: /freebsd/lib/libc/stdlib/exit.3 (revision c4269e63ecf301306a6176b9fe9002c4c2265695)
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.\"
323f3ec4b9SKonstantin 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*c4269e63SKonstantin BelousovThe complete
106*c4269e63SKonstantin Belousov.Fa status
107*c4269e63SKonstantin Belousovvalue is avaliable as
108*c4269e63SKonstantin Belousov.Va si_status
109*c4269e63SKonstantin Belousovmember of the
110*c4269e63SKonstantin Belousov.Vt siginfo_t
111*c4269e63SKonstantin Belousovstructure, to the
112*c4269e63SKonstantin Belousov.Xr wait6 2
113*c4269e63SKonstantin Belousovand
114*c4269e63SKonstantin Belousov.Xr sigwaitinfo 2
115*c4269e63SKonstantin Belousovcallers, and
116*c4269e63SKonstantin Belousov.Va SIGCHLD
117*c4269e63SKonstantin Belousovsignal handlers.
118*c4269e63SKonstantin Belousov.Pp
1193f3ec4b9SKonstantin BelousovCalls to the
1203f3ec4b9SKonstantin Belousov.Fn exit
1213f3ec4b9SKonstantin Belousovfunction are serialized.
1223f3ec4b9SKonstantin BelousovAll functions registered by
1233f3ec4b9SKonstantin Belousov.Xr atexit 3
1243f3ec4b9SKonstantin Belousovare executed in the first thread that called
1253f3ec4b9SKonstantin Belousov.Nm exit .
1263f3ec4b9SKonstantin BelousovIf any other thread of the process calls
1273f3ec4b9SKonstantin Belousov.Nm exit
1283f3ec4b9SKonstantin Belousovbefore all registered functions have completed or before the process
1293f3ec4b9SKonstantin Belousovterminates, the thread is blocked until the process terminates.
1303f3ec4b9SKonstantin BelousovThe exit status of the process is the
1313f3ec4b9SKonstantin Belousov.Fa status
1323f3ec4b9SKonstantin Belousovargument of the first
1333f3ec4b9SKonstantin Belousov.Nm exit
1343f3ec4b9SKonstantin Belousovcall which thread proceeds the atexit handlers.
1353f3ec4b9SKonstantin Belousov.Pp
1362c5db8c6SGarrett WollmanNote that
1372c5db8c6SGarrett Wollman.Fn exit
1382c5db8c6SGarrett Wollmandoes nothing to prevent bottomless recursion should a function registered
1392c5db8c6SGarrett Wollmanusing
1402c5db8c6SGarrett Wollman.Xr atexit 3
1412c5db8c6SGarrett Wollmanitself call
1422c5db8c6SGarrett Wollman.Fn exit .
143eca67d51SGarrett WollmanSuch functions must call
144eca67d51SGarrett Wollman.Fn _Exit
1452c5db8c6SGarrett Wollmaninstead (although this has other effects as well which may not be desired).
14658f0484fSRodney W. Grimes.Sh RETURN VALUES
14758f0484fSRodney W. GrimesThe
14858f0484fSRodney W. Grimes.Fn exit
149eca67d51SGarrett Wollmanand
150eca67d51SGarrett Wollman.Fn _Exit
151eca67d51SGarrett Wollmanfunctions
152eca67d51SGarrett Wollmannever return.
15358f0484fSRodney W. Grimes.Sh SEE ALSO
154c8d40b7dSRuslan Ermilov.Xr _exit 2 ,
1554c72d794SEric van Gyzen.Xr abort2 2 ,
1561c85060aSRuslan Ermilov.Xr wait 2 ,
1570a31efe0SDavid Chisnall.Xr at_quick_exit 3 ,
1580aee91e1SChristian Brueffer.Xr atexit 3 ,
15958f0484fSRodney W. Grimes.Xr intro 3 ,
1600a31efe0SDavid Chisnall.Xr quick_exit 3 ,
16175141cc9SWolfram Schneider.Xr sysexits 3 ,
16275141cc9SWolfram Schneider.Xr tmpfile 3
16358f0484fSRodney W. Grimes.Sh STANDARDS
16458f0484fSRodney W. GrimesThe
16558f0484fSRodney W. Grimes.Fn exit
166eca67d51SGarrett Wollmanand
167eca67d51SGarrett Wollman.Fn _Exit
168eca67d51SGarrett Wollmanfunctions conform to
169eca67d51SGarrett Wollman.St -isoC-99 .
170bbf6efd7SSergio Carlavilla Delgado.Sh HISTORY
171bbf6efd7SSergio Carlavilla DelgadoThe
172bbf6efd7SSergio Carlavilla Delgado.Fn exit
173bbf6efd7SSergio Carlavilla Delgadofunction appeared in
174bbf6efd7SSergio Carlavilla Delgado.At v1 .
175