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));
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.
LinuxThreads