pthread_atfork
Table des matières
Retour à l'index
NOM
pthread_atfork — Enregistrer des gestionnaires d'appel à fork
BIBLIOTHÈQUE
Bibliothèque de threads POSIX (libpthread, -lpthread)
SYNOPSIS
#include <pthread.h>
int pthread_atfork(void (*prepare)(void), void (*parent)(void),
void (*child)(void));
DESCRIPTION
Le fonction pthread_atfork() enregistre les gestionnaires de fork qui
doivent être exécutés quand fork(2) est appelé par un des threads d'un
processus. Les gestionnaires sont exécutés dans le contexte du thread qui
appelle fork(2).
Trois types de gestionnaires peuvent être enregistrés :
- -
-
prepare spécifie un gestionnaire qui est exécuté dans le processus parent
avant le début du traitement de fork(2).
- -
-
parent spécifie un gestionnaire qui est exécuté dans le processus parent
après l'achèvement du traitement de fork(2).
- -
-
child spécifie un gestionnaire qui est exécuté dans le processus enfant
après l'achèvement du traitement de fork(2).
N'importe lequel des trois arguments peut être NULL si aucun gestionnaire
n'est nécessaire dans la phase correspondante du traitement de fork(2).
VALEUR RENVOYÉE
pthread_atfork() renvoie zéro en cas de succès. En cas d'erreur, elle
renvoie un numéro d'erreur. pthread_atfork peut être appelée plusieurs
fois par un processus pour enregistrer des gestionnaires
supplémentaires. Les gestionnaires de chaque phase sont appelés dans un
ordre spécifié : les gestionnaires prepare sont appelés en ordre inverse
d'enregistrement, les gestionnaires parent et child sont appelés dans
l'ordre d'enregistrement.
ERREURS
- ENOMEM
-
Impossible d'allouer assez de mémoire pour enregistrer l'entrée de liste de
gestionnaires de fork.
STANDARDS
POSIX.1-2008.
HISTORIQUE
POSIX.1-2001.
NOTES
Quand fork(2) est appelé dans processus multithreadé, seul le thread
appelant est dupliqué dans le processus enfant. L'objectif originel de
pthread_atfork() était de permettre de renvoyer le processus enfant dans
un état cohérent. Par exemple, au moment de l'appel de fork(2), d'autres
threads peuvent avoir verrouillé des mutex qui sont visibles dans la
mémoirede l'espace utilisateur dupliquée dans l'enfant. Ce type de mutex ne
devrait jamais être déverrouillé dans la mesure où les threads qui ont placé
les verrous ne sont pas dupliqués dans l'enfant. L'intention de
pthread_atfork() était de fournir un mécanisme selon lequel l'application
(ou une bibliothèque) pouvait assurer que les mutex et autres états de
processus et de thread soient restaurés dans un état cohérent. En pratique,
cette tâche est en général trop difficile pour être réalisable.
Après qu'un fork(2) dans un processus multithreadé retourne dans
l'enfant, l'enfant peut seulement appeler des fonctions sûres du point de
vue des signaux asynchrones (consultez signal-safety(7)) jusqu'au moment
où il appelle execve(2) pour exécuter un nouveau programme.
POSIX.1 spécifie que pthread_atfork() ne pourra échouer avec l'erreur
EINTR.
VOIR AUSSI
fork(2), atexit(3), pthreads(7)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Alain Portal <aportal@univ-montp2.fr>,
Christophe Blaess <https://www.blaess.fr/christophe/>,
David Prévot <david@tilapin.org>,
Denis Barbier <barbier@debian.org>,
Florentin Duneau <fduneau@gmail.com>,
François Micaux,
Frédéric Hantrais <fhantrais@gmail.com>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Julien Cristau <jcristau@debian.org>,
Nicolas François <nicolas.francois@centraliens.net>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
Thomas Blein <tblein@tblein.eu>,
Thomas Huriaux <thomas.huriaux@gmail.com>
et
Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- STANDARDS
-
- HISTORIQUE
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:21 GMT, September 19, 2025