Loading...
--- Libc/Libc-262/stdlib/atexit.3
+++ Libc/Libc-583/stdlib/atexit.3
@@ -34,36 +34,71 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)atexit.3 8.1 (Berkeley) 6/4/93
-.\" $FreeBSD: src/lib/libc/stdlib/atexit.3,v 1.7 2001/09/07 14:46:35 asmodai Exp $
+.\" $FreeBSD: src/lib/libc/stdlib/atexit.3,v 1.10 2002/12/18 13:33:03 ru Exp $
.\"
-.Dd June 4, 1993
+.Dd May 20, 2008
.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
-.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
-registers the given
-.Ar function
+registers the function
+.Fa func
to be called at program exit, whether via
.Xr exit 3
or via return from the program's
-.Em main .
+.Fn main .
Functions so registered are called in reverse order;
no arguments are passed.
-At least 32 functions can always be registered,
-and more are allowed as long as sufficient memory can be allocated.
+#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
+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.
+(Alternatively, the callbacks may cause abnormal
+process termination, for example by calling
+.Xr abort 3 . )
+.Pp
+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
-.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