ABCDEFGHIJKLMNOPQRSTUVWXYZ

pthread_atfork

PTHREAD_ATFORK(3)                                            PTHREAD_ATFORK(3)



NAME
       pthread_atfork - register handlers to be called at fork(2) time


SYNOPSIS
       #include <pthread.h>

       int  pthread_atfork(void  (*prepare)(void),  void (*parent)(void), void
       (*child)(void));


DESCRIPTION
       pthread_atfork registers handler functions to be called just before and
       just  after a new process is created with fork(2).  The prepare handler
       will be called from the parent process, just before the new process  is
       created.  The  parent  handler  will be called from the parent process,
       just before fork(2) returns. The child handler will be called from  the
       child process, just before fork(2) returns.

       One  or  several of the three handlers prepare, parent and child can be
       given as NULL, meaning that no handler needs to be called at the corre-
       sponding point.

       pthread_atfork  can  be called several times to install several sets of
       handlers. At fork(2) time, the prepare  handlers  are  called  in  LIFO
       order (last added with pthread_atfork, first called before fork), while
       the parent and child handlers are called in FIFO  order  (first  added,
       first called).

       To understand the purpose of pthread_atfork, recall that fork(2) dupli-
       cates the whole memory space, including mutexes in their current  lock-
       ing  state,  but only the calling thread: other threads are not running
       in the child process.  The mutexes are not usable after  the  fork  and
       must be initialized with pthread_mutex_init in the child process.  This
       is a limitation of the current implementation and might or might not be
       present in future versions.


RETURN VALUE
       pthread_atfork returns 0 on success and a non-zero error code on error.


ERRORS
       ENOMEM insufficient memory available to register the handlers.


AUTHOR
       Xavier Leroy <Xavier.Leroy@inria.fr>


SEE ALSO
       fork(2), pthread_mutex_lock(3), pthread_mutex_unlock(3).



                                 LinuxThreads                PTHREAD_ATFORK(3)