Provided by: manpages-fr-dev_4.23.1-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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.