.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2017 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pthread_atfork 3 "31 octobre 2023" "Pages du manuel de Linux 6.06" .SH NOM pthread_atfork — Enregistrer des gestionnaires d'appel à fork .SH BIBLIOTHÈQUE Bibliothèque de threads POSIX (\fIlibpthread\fP, \fI\-lpthread\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBint pthread_atfork(void (*\fP\fIprepare\fP\fB)(void), void (*\fP\fIparent\fP\fB)(void),\fP \fB void (*\fP\fIchild\fP\fB)(void));\fP .fi .SH DESCRIPTION Le fonction \fBpthread_atfork\fP() enregistre les gestionnaires de fork qui doivent être exécutés quand \fBfork\fP(2) est appelé par un des threads d'un processus. Les gestionnaires sont exécutés dans le contexte du thread qui appelle \fBfork\fP(2). .P Trois types de gestionnaires peuvent être enregistrés : .IP \- 3 \fIprepare\fP spécifie un gestionnaire qui est exécuté dans le processus parent avant le début du traitement de \fBfork\fP(2). .IP \- \fIparent\fP spécifie un gestionnaire qui est exécuté dans le processus parent après l'achèvement du traitement de \fBfork\fP(2). .IP \- \fIchild\fP spécifie un gestionnaire qui est exécuté dans le processus enfant après l'achèvement du traitement de \fBfork\fP(2). .P N'importe lequel des trois arguments peut être NULL si aucun gestionnaire n'est nécessaire dans la phase correspondante du traitement de \fBfork\fP(2). .SH "VALEUR RENVOYÉE" \fBpthread_atfork\fP() renvoie zéro en cas de succès. En cas d'erreur, elle renvoie un numéro d'erreur. \fBpthread_atfork\fP 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 \fIprepare\fP sont appelés en ordre inverse d'enregistrement, les gestionnaires \fIparent\fP et \fIchild\fP sont appelés dans l'ordre d'enregistrement. .SH ERREURS .TP \fBENOMEM\fP Impossible d'allouer assez de mémoire pour enregistrer l'entrée de liste de gestionnaires de fork. .SH STANDARDS POSIX.1\-2008. .SH HISTORIQUE POSIX.1\-2001. .SH NOTES Quand \fBfork\fP(2) est appelé dans processus multithreadé, seul le thread appelant est dupliqué dans le processus enfant. L'objectif originel de \fBpthread_atfork\fP() était de permettre de renvoyer le processus enfant dans un état cohérent. Par exemple, au moment de l'appel de \fBfork\fP(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 \fBpthread_atfork\fP() é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. .P Après qu'un \fBfork\fP(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 \fBsignal\-safety\fP(7)) jusqu'au moment où il appelle \fBexecve\fP(2) pour exécuter un nouveau programme. .P POSIX.1 spécifie que \fBpthread_atfork\fP() ne pourra échouer avec l'erreur \fBEINTR\fP. .SH "VOIR AUSSI" \fBfork\fP(2), \fBatexit\fP(3), \fBpthreads\fP(7) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Alain Portal , Christophe Blaess , David Prévot , Denis Barbier , Florentin Duneau , François Micaux, Frédéric Hantrais , Jean-Luc Coulon (f5ibh) , Jean-Philippe Guérard , Julien Cristau , Nicolas François , Simon Paillard , Stéphan Rafin , Thierry Vignaud , Thomas Blein , Thomas Huriaux et Jean-Pierre Giraud . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .