]> git.saurik.com Git - apple/libc.git/blobdiff - stdlib/FreeBSD/atexit.3
Libc-997.1.1.tar.gz
[apple/libc.git] / stdlib / FreeBSD / atexit.3
index 72a9977257559ca66e0d7dc5c0395829535c520c..b3d978ba97bcf44dade06274faff283fbb90ffd2 100644 (file)
 .\" 2. Redistributions in binary form must reproduce the above copyright
 .\"    notice, this list of conditions and the following disclaimer in the
 .\"    documentation and/or other materials provided with the distribution.
 .\" 2. Redistributions in binary form must reproduce the above copyright
 .\"    notice, this list of conditions and the following disclaimer in the
 .\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"    This product includes software developed by the University of
-.\"    California, Berkeley and its contributors.
 .\" 4. Neither the name of the University nor the names of its contributors
 .\"    may be used to endorse or promote products derived from this software
 .\"    without specific prior written permission.
 .\" 4. Neither the name of the University nor the names of its contributors
 .\"    may be used to endorse or promote products derived from this software
 .\"    without specific prior written permission.
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)atexit.3   8.1 (Berkeley) 6/4/93
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)atexit.3   8.1 (Berkeley) 6/4/93
-.\" $FreeBSD: src/lib/libc/stdlib/atexit.3,v 1.10 2002/12/18 13:33:03 ru Exp $
+.\" $FreeBSD: src/lib/libc/stdlib/atexit.3,v 1.11 2007/01/09 00:28:09 imp Exp $
 .\"
 .\"
-.Dd September 6, 2002
+.Dd May 20, 2008
 .Dt ATEXIT 3
 .Os
 .Sh NAME
 .Nm atexit
 .Nd register a function to be called on exit
 .Dt ATEXIT 3
 .Os
 .Sh NAME
 .Nm atexit
 .Nd register a function to be called on exit
-.Sh LIBRARY
-.Lb libc
 .Sh SYNOPSIS
 .In stdlib.h
 .Ft int
 .Sh SYNOPSIS
 .In stdlib.h
 .Ft int
-.Fn atexit "void (*function)(void)"
+.Fn atexit "void (*func)(void)"
+#ifdef UNIFDEF_BLOCKS
+.Ft int
+.Fn atexit_b "void (^block)(void)"
+#endif
 .Sh DESCRIPTION
 The
 .Fn atexit
 function
 .Sh DESCRIPTION
 The
 .Fn atexit
 function
-registers the given
-.Fa function
+registers the function
+.Fa func
 to be called at program exit, whether via
 .Xr exit 3
 or via return from the program's
 .Fn main .
 Functions so registered are called in reverse order;
 no arguments are passed.
 to be called at program exit, whether via
 .Xr exit 3
 or via return from the program's
 .Fn main .
 Functions so registered are called in reverse order;
 no arguments are passed.
+#ifdef UNIFDEF_BLOCKS
+.Pp
+The
+.Fn atexit_b
+function is like
+.Fn atexit
+except the callback is a block pointer instead of a function pointer.
+.Bd -ragged -offset indent
+Note: The
+.Fn Block_copy
+function (defined in
+.In Blocks.h )
+is used by
+.Fn atexit_b
+to make a copy of the block, especially for the case when a stack-based
+block might go out of scope when the subroutine returns.
+.Ed
+#endif
 .Pp
 .Pp
-These functions must not call
+These callbacks must not call
 .Fn exit ;
 if it should be necessary to terminate the process while in such a
 function, the
 .Xr _exit 2
 function should be used.
 .Fn exit ;
 if it should be necessary to terminate the process while in such a
 function, the
 .Xr _exit 2
 function should be used.
-(Alternatively, the function may cause abnormal
+(Alternatively, the callbacks may cause abnormal
 process termination, for example by calling
 .Xr abort 3 . )
 .Pp
 process termination, for example by calling
 .Xr abort 3 . )
 .Pp
-At least 32 functions can always be registered,
-and more are allowed as long as sufficient memory can be allocated.
+At least 32 callbacks can always be registered;
+more are allowed as long as sufficient memory can be allocated.
 .\" XXX {ATEXIT_MAX} is not implemented yet
 .Sh RETURN VALUES
 .\" XXX {ATEXIT_MAX} is not implemented yet
 .Sh RETURN VALUES
-.Rv -std atexit
+#ifdef UNIFDEF_BLOCKS
+.ds ATEXIT_B atexit_b
+#endif
+.Rv -std atexit \*[ATEXIT_B]
 .Sh ERRORS
 .Bl -tag -width Er
 .It Bq Er ENOMEM
 .Sh ERRORS
 .Bl -tag -width Er
 .It Bq Er ENOMEM