90 lines
2.1 KiB
Groff
90 lines
2.1 KiB
Groff
.\" $OpenBSD: pthread_atfork.3,v 1.12 2015/05/15 18:47:53 jmc Exp $
|
|
.\"
|
|
.\" David Leonard <d@openbsd.org>, 1999. Public domain.
|
|
.\"
|
|
.Dd $Mdocdate: May 15 2015 $
|
|
.Dt PTHREAD_ATFORK 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm pthread_atfork
|
|
.Nd specify handler functions to call when the process forks
|
|
.Sh SYNOPSIS
|
|
.In pthread.h
|
|
.Ft int
|
|
.Fn pthread_atfork "void (*prepare)(void)" "void (*parent)(void)" "void (*child)(void)"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Fn pthread_atfork
|
|
function declares fork handlers to be called before and after
|
|
.Xr fork 2 ,
|
|
in the context of the thread that called
|
|
.Xr fork 2 .
|
|
The
|
|
.Fa prepare
|
|
fork handler will be called before
|
|
.Xr fork 2
|
|
processing commences.
|
|
The
|
|
.Fa parent
|
|
fork handler will be called after
|
|
.Xr fork 2
|
|
processing completes in the parent process.
|
|
The
|
|
.Fa child
|
|
fork handler will be called after
|
|
.Xr fork 2
|
|
processing completes in the child process.
|
|
If no handling is desired at
|
|
one or more of these three points,
|
|
the corresponding fork handler
|
|
address(es) may be set to
|
|
.Dv NULL .
|
|
.Pp
|
|
The order of calls to
|
|
.Fn pthread_atfork
|
|
is significant.
|
|
The
|
|
.Fa parent
|
|
and
|
|
.Fa child
|
|
fork handlers will be called in the order in which they were established
|
|
by calls to
|
|
.Fn pthread_atfork .
|
|
The
|
|
.Fa prepare
|
|
fork handlers will be called in the opposite order.
|
|
.Pp
|
|
If a shared object is unloaded from process memory using
|
|
.Xr dlclose 3 ,
|
|
then any functions registered by calling
|
|
.Fn pthread_atfork
|
|
from that shared object will be unregistered without being invoked.
|
|
Note that it is the source of the call to
|
|
.Fn pthread_atfork
|
|
that matters, not the source of the functions that were registered.
|
|
.Sh RETURN VALUES
|
|
Upon successful completion,
|
|
.Fn pthread_atfork
|
|
will return a value of zero.
|
|
Otherwise, an error number will be
|
|
returned to indicate the error.
|
|
.Sh ERRORS
|
|
.Fn pthread_atfork
|
|
will fail if:
|
|
.Bl -tag -width Er
|
|
.It Bq Er ENOMEM
|
|
Insufficient table space exists to record the fork handler addresses.
|
|
None of the handler lists are modified.
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr fork 2 ,
|
|
.Xr atexit 3 ,
|
|
.Xr dlclose 3
|
|
.Sh STANDARDS
|
|
.Fn pthread_atfork
|
|
conforms to
|
|
.St -p1003.1-2004 .
|
|
.Pp
|
|
The behavior when a shared object is unloaded is an extension to
|
|
that standard.
|