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.