pthread_atfork


 
Thread Tools Search this Thread
Operating Systems Linux pthread_atfork
# 1  
Old 11-06-2005
pthread_atfork

Hi,
I had a doubt regarding the ordering of function calls that are registered using
pthread_atfork( void (*prepare)(void), void (*parent)(void), void (*child)(void)) .

Posix standard requires that when pthread_atfork is called several times, the prepare handlers are executed in reverse order as they were registered, and child and parent handlers are executed in the same order as they were registered.

Why is this ordering important and why are prepare handlers called in the reversed order ?

Thanks in advance,
-Girish
Login or Register to Ask a Question

Previous Thread | Next Thread
Login or Register to Ask a Question
PTHREAD_ATFORK(3)					   BSD Library Functions Manual 					 PTHREAD_ATFORK(3)

NAME
pthread_atfork -- register fork handlers LIBRARY
POSIX Threads Library (libpthread, -lpthread) SYNOPSIS
#include <pthread.h> int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)); DESCRIPTION
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. RETURN VALUES
If successful, the pthread_atfork() function will return zero. Otherwise an error number will be returned to indicate the error. ERRORS
The pthread_atfork() function will fail if: [ENOMEM] Insufficient table space exists to record the fork handler addresses. SEE ALSO
fork(2), pthread(3) STANDARDS
The pthread_atfork() function is expected to conform to IEEE Std 1003.1 (``POSIX.1''). AUTHORS
This manpage was written by Alex Vasylenko <lxv@omut.org>. BSD
June 21, 2004 BSD