Sous-routine pthread_atfork

Objectif

Enregistre les gestionnaires de bifurcation.

Bibliothèque

Bibliothèque d'unités d'exécution (libpthreads.a)

Syntaxe

#include <sys/types.h>
#include <unistd.h>

int pthread_atfork (prepare, parent, child)
void (*prepare)(void);
void (*parent)(void);
void (*child)(void);

Descriptif

La sous-routine pthread_atfork enregistre les gestionnaires de nettoyage de bifurcation. Le gestionnaire prepare est appelé avant le début du traitement de la sous-routine fork . Le gestionnaire parent est appelé une fois le traitement de la sous-routine fork terminé dans le processus parent. Le gestionnaire enfant est appelé une fois le traitement de la sous-routine fork terminé dans le processus enfant.

Lorsque la sous-routine fork est appelée, seule l'unité d'exécution appelante est dupliquée dans le processus enfant, mais toutes les variables de synchronisation sont dupliquées. La sous-routine pthread_atfork permet d'éviter les incohérences d'état et les interblocages qui en résultent. L'utilisation attendue est que le gestionnaire prepare acquiert tous les mutex et que les deux autres gestionnaires les libèrent dans les processus parent et enfant.

Les gestionnaires de préparation sont appelés dans l'ordre LIFO (Last In First Out) ; tandis que les gestionnaires parent et enfant sont appelés dans l'ordre FIFO (first-in first-out). Ensuite, l'ordre des appels à la sous-routine pthread_atfork est significatif.

Remarque: Le fichier d'en-tête pthread.h doit être le premier fichier inclus de chaque fichier source utilisant la bibliothèque d'unités d'exécution.

Paramètres

Article Descriptif
préparer Pointe vers le gestionnaire de nettoyage de prétraitement. Si aucun traitement de pré-bifurcation n'est souhaité, la valeur de ce pointeur doit être définie sur NULL.
parent Pointe vers le gestionnaire de nettoyage post-fork parent. Si aucun traitement post-fork parent n'est souhaité, la valeur de ce pointeur doit être définie sur NULL.
enfant Pointe vers le gestionnaire de nettoyage post-fork enfant. Si aucun traitement post-fork enfant n'est souhaité, la valeur de ce pointeur doit être définie sur NULL.

Valeurs renvoyées

Une fois l'opération terminée, la sous-routine pthread_atfork renvoie la valeur zéro. Sinon, un numéro d'erreur est renvoyé pour indiquer l'erreur.

Codes d'erreur

La sous-routine pthread_atfork échoue si:

Article Descriptif
ENOMEM L'espace table est insuffisant pour enregistrer les adresses du gestionnaire de bifurcation.

La sous-routine pthread_atfork ne renvoie pas le code d'erreur EINTR.