]> git.saurik.com Git - apple/libc.git/blame - stdlib/atexit.3
Libc-594.9.5.tar.gz
[apple/libc.git] / stdlib / atexit.3
CommitLineData
224c7076 1.\" Copyright (c) 1990, 1991, 1993
e9ce8d39
A
2.\" The Regents of the University of California. All rights reserved.
3.\"
224c7076
A
4.\" This code is derived from software contributed to Berkeley by
5.\" Chris Torek and the American National Standards Committee X3,
6.\" on Information Processing Systems.
7.\"
e9ce8d39
A
8.\" Redistribution and use in source and binary forms, with or without
9.\" modification, are permitted provided that the following conditions
10.\" are met:
11.\" 1. Redistributions of source code must retain the above copyright
12.\" notice, this list of conditions and the following disclaimer.
13.\" 2. Redistributions in binary form must reproduce the above copyright
14.\" notice, this list of conditions and the following disclaimer in the
15.\" documentation and/or other materials provided with the distribution.
16.\" 3. All advertising materials mentioning features or use of this software
17.\" must display the following acknowledgement:
18.\" This product includes software developed by the University of
19.\" California, Berkeley and its contributors.
20.\" 4. Neither the name of the University nor the names of its contributors
21.\" may be used to endorse or promote products derived from this software
22.\" without specific prior written permission.
23.\"
24.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34.\" SUCH DAMAGE.
35.\"
224c7076
A
36.\" @(#)atexit.3 8.1 (Berkeley) 6/4/93
37.\" $FreeBSD: src/lib/libc/stdlib/atexit.3,v 1.10 2002/12/18 13:33:03 ru Exp $
e9ce8d39 38.\"
34e8f829 39.Dd May 20, 2008
224c7076 40.Dt ATEXIT 3
e9ce8d39
A
41.Os
42.Sh NAME
224c7076
A
43.Nm atexit
44.Nd register a function to be called on exit
e9ce8d39 45.Sh SYNOPSIS
224c7076 46.In stdlib.h
e9ce8d39 47.Ft int
224c7076 48.Fn atexit "void (*func)(void)"
34e8f829
A
49#ifdef UNIFDEF_BLOCKS
50.Ft int
51.Fn atexit_b "void (^block)(void)"
52#endif
e9ce8d39
A
53.Sh DESCRIPTION
54The
224c7076 55.Fn atexit
5b2abdfb 56function
224c7076
A
57registers the function
58.Fa func
59to be called at program exit, whether via
60.Xr exit 3
61or via return from the program's
62.Fn main .
63Functions so registered are called in reverse order;
64no arguments are passed.
34e8f829
A
65#ifdef UNIFDEF_BLOCKS
66.Pp
67The
68.Fn atexit_b
69function is like
70.Fn atexit
71except the callback is a block pointer instead of a function pointer.
72.Bd -ragged -offset indent
73Note: The
74.Fn Block_copy
75function (defined in
76.In Blocks.h )
77is used by
78.Fn atexit_b
79to make a copy of the block, especially for the case when a stack-based
80block might go out of scope when the subroutine returns.
81.Ed
82#endif
224c7076 83.Pp
34e8f829 84These callbacks must not call
224c7076
A
85.Fn exit ;
86if it should be necessary to terminate the process while in such a
87function, the
88.Xr _exit 2
89function should be used.
34e8f829 90(Alternatively, the callbacks may cause abnormal
224c7076
A
91process termination, for example by calling
92.Xr abort 3 . )
93.Pp
34e8f829 94At least 32 callbacks can always be registered;
224c7076
A
95more are allowed as long as sufficient memory can be allocated.
96.\" XXX {ATEXIT_MAX} is not implemented yet
e9ce8d39 97.Sh RETURN VALUES
34e8f829
A
98#ifdef UNIFDEF_BLOCKS
99.ds ATEXIT_B atexit_b
100#endif
101.Rv -std atexit \*[ATEXIT_B]
224c7076
A
102.Sh ERRORS
103.Bl -tag -width Er
104.It Bq Er ENOMEM
105No memory was available to add the function to the list.
106The existing list of functions is unmodified.
107.El
e9ce8d39 108.Sh SEE ALSO
224c7076
A
109.Xr exit 3
110.Sh STANDARDS
5b2abdfb 111The
224c7076
A
112.Fn atexit
113function
114conforms to
115.St -isoC .