Provided by: manpages-fr-dev_4.26.0-1_all bug

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 à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                  pthread_atfork(3)