pthread_atfork
—
register fork handlers
POSIX Threads Library (libpthread,
-lpthread)
#include
<pthread.h>
int
pthread_atfork
(void
(*prepare)(void), void (*parent)(void),
void (*child)(void));
The
pthread_atfork
()
function declares fork handlers to be called before and after
fork(2),
in the context of the thread that called
fork(2).
The handlers registered with
pthread_atfork
()
are called at the moments in time described below:
- prepare
- Before
fork(2)
processing commences in the parent process. If more than one
prepare handler is registered they will be called in
the opposite order they were registered.
- parent
- After
fork(2)
completes in the parent process. If more than one
parent handler is registered they will be called in
the same order they were registered.
- child
- After
fork(2)
processing completes in the child process. If more than one
child handler is registered they will be called in
the same order they were registered.
If no handling is desired at one or more of these three points, a
null pointer may be passed as the corresponding fork handler.
If successful, the pthread_atfork
()
function will return zero. Otherwise an error number will be returned to
indicate the error.
The pthread_atfork
() function will fail
if:
- [
ENOMEM
]
- Insufficient table space exists to record the fork handler addresses.
The pthread_atfork
() function is expected
to conform to IEEE Std 1003.1
(“POSIX.1”).