NOM¶
pthread_atfork - Enregistrer des gestionnaires à invoquer lors de l'appel
à
fork(2)
SYNOPSIS¶
#include <pthread.h>
int pthread_atfork(void (*prepare)(void), void
(*parent )(void), void (*child)(void));
DESCRIPTION¶
pthread_atfork() enregistre les fonctions à appeler juste avant et
juste après la création d'un nouveau processus par
fork(2). Le gestionnaire
prepare est appelé par le
processus parent juste avant la création du nouveau processus. Le
gestionnaire
parent est appelé par le processus parent juste
avant que
fork(2) finisse. Le gestionnaire
child est
appelé par le processus fils juste avant la fin de l'appel
fork(2).
Un ou plusieurs des trois gestionnaires
prepare,
parent et
child peut être affecté à
NULL, ce qui
signifie qu'aucun gestionnaire ne sera appelé au moment correspondant.
pthread_atfork peut être appelée plusieurs fois pour
enregistrer plusieurs ensembles de gestionnaires. Lors de l'appel à
fork(2), les gestionnaires
prepare sont appelés dans
l'ordre LIFO (dernier ajouté avec
pthread_atfork, premier
appelé avant
fork), alors que les gestionnaires
parent et
child sont appelés dans l'ordre FIFO (premier ajouté,
premier appelé).
Pour comprendre l'objectif de
pthread_atfork(), rappelons que
fork(2) copie toute l'image mémoire du processus, y compris ses
mutex dans leur état de blocage courant, mais seulement le thread
appelant : les autres threads ne s'exécutent pas dans le
processus fils. Les mutex ne sont pas utilisables après le
fork() et doivent être initialisés avec
pthread_mutex_init() dans le processus fils. C'est une limitation de
l'implémentation actuelle et peut être ou non présente
dans les prochaines versions.
VALEUR RENVOYÉE¶
pthread_atfork() retourne 0 en cas de succès et un code d'erreur
non nul en cas d'erreur.
ERREURS¶
- ENOMEM
- Pas assez de mémoire disponible pour enregistrer les gestionnaires.
AUTEUR¶
Xavier Leroy <Xavier.Leroy@inria.fr>
VOIR AUSSI¶
fork(2),
pthread_mutex_lock(3),
pthread_mutex_unlock(3).
TRADUCTION¶
Cette page de manuel a été traduite par Thierry Vignaud
<tvignaud AT mandriva DOT com> en 2000 et révisée par
Alain Portal <aportal AT univ-montp2 DOT fr> en 2006. La version
présente dans Debian est maintenue par les membres de la liste
<debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler
toute erreur de traduction par un rapport de bogue sur le paquet
manpages-fr-extra.