pthread_atfork(3) Library Functions Manual pthread_atfork(3) NOM pthread_atfork -- Enregistrer des gestionnaires d'appel a fork BIBLIOTHEQUE Bibliotheque de threads POSIX (libpthread, -lpthread) SYNOPSIS #include int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)); DESCRIPTION Le fonction pthread_atfork() enregistre les gestionnaires de fork qui doivent etre executes quand fork(2) est appele par un des threads d'un processus. Les gestionnaires sont executes dans le contexte du thread qui appelle fork(2). Trois types de gestionnaires peuvent etre enregistres : - prepare specifie un gestionnaire qui est execute dans le processus parent avant le debut du traitement de fork(2). - parent specifie un gestionnaire qui est execute dans le processus parent apres l'achevement du traitement de fork(2). - child specifie un gestionnaire qui est execute dans le processus enfant apres l'achevement du traitement de fork(2). N'importe lequel des trois arguments peut etre NULL si aucun gestionnaire n'est necessaire dans la phase correspondante du traitement de fork(2). VALEUR RENVOYEE pthread_atfork() renvoie zero en cas de succes. En cas d'erreur, elle renvoie un numero d'erreur. pthread_atfork peut etre appelee plusieurs fois par un processus pour enregistrer des gestionnaires supplementaires. Les gestionnaires de chaque phase sont appeles dans un ordre specifie : les gestionnaires prepare sont appeles en ordre inverse d'enregistrement, les gestionnaires parent et child sont appeles dans l'ordre d'enregistrement. ERREURS ENOMEM Impossible d'allouer assez de memoire pour enregistrer l'entree de liste de gestionnaires de fork. STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001. NOTES Quand fork(2) est appele dans processus multithreade, seul le thread appelant est duplique dans le processus enfant. L'objectif originel de pthread_atfork() etait de permettre de renvoyer le processus enfant dans un etat coherent. Par exemple, au moment de l'appel de fork(2), d'autres threads peuvent avoir verrouille des mutex qui sont visibles dans la memoirede l'espace utilisateur dupliquee dans l'enfant. Ce type de mutex ne devrait jamais etre deverrouille dans la mesure ou les threads qui ont place les verrous ne sont pas dupliques dans l'enfant. L'intention de pthread_atfork() etait de fournir un mecanisme selon lequel l'application (ou une bibliotheque) pouvait assurer que les mutex et autres etats de processus et de thread soient restaures dans un etat coherent. En pratique, cette tache est en general trop difficile pour etre realisable. Apres qu'un fork(2) dans un processus multithreade retourne dans l'enfant, l'enfant peut seulement appeler des fonctions sures du point de vue des signaux asynchrones (consultez signal-safety(7)) jusqu'au moment ou il appelle execve(2) pour executer un nouveau programme. POSIX.1 specifie que pthread_atfork() ne pourra echouer avec l'erreur EINTR. VOIR AUSSI fork(2), atexit(3), pthreads(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Alain Portal , Christophe Blaess , David Prevot , Denis Barbier , Florentin Duneau , Francois Micaux, Frederic Hantrais , Jean-Luc Coulon (f5ibh) , Jean-Philippe Guerard , Julien Cristau , Nicolas Francois , Simon Paillard , Stephan Rafin , Thierry Vignaud , Thomas Blein , Thomas Huriaux et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 pthread_atfork(3)