PTHREAD_SIGNAL | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
int pthread_sigmask(int how, const sigset_t *newmask, sigset_t *oldmask);
int pthread_kill(pthread_t thread, int signo);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
pthread_sigmask() change le masque des signaux pour le thread appelant tel que décrit par les arguments how et newmask. Si oldmask ne vaut pas NULL, le précédent masque de signaux est sauvegardé dans l'emplacement pointé par oldmask.
La signification des arguments how et ewmask est la même que pour sigprocmask(2). Si how vaut SIG_SETMASK, le masque de signal est positionné à newmask. Si how vaut SIG_BLOCK, les signaux indiqués par newmask sont ajoutés au masque de signaux courant. Si how vaut SIG_UNBLOCK, les signaux indiqués par newmask sont retirés du masque courant.
N.B. : Les masques de signaux sont définis par thread, mais la gestion des signaux et les gestionnaires associés, tels que mis en place par sigaction(2), sont partagés par tous les threads.
pthread_kill() envoie le signal numéro signo au thread thread. Le signal est reçu et géré tel que décrit dans kill(2).
sigwait() suspend le thread appelant jusqu'à ce que l'un des signaux définis dans set soit envoyé au thread appelant. Le numéro du signal reçu est alors sauvegardé dans l'emplacement pointé par sig et la fonction rend la main. Les signaux définis dans set doivent être bloqués et non ignorés lorsque l'on entre dans sigwait(). Si l'un des signaux reçus possède un gestionnaire de signal, cette fonction n'est pas appelée.
ANNULATION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
La fonction pthread_kill () renvoie l'un des codes d'erreur suivants en cas de problème :
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
BOGUES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Dans LinuxThreads, chaque thread est un processus par rapport au noyau, possédant son propre PID, aussi les signaux extérieurs sont toujours envoyés vers un thread particulier. Si, par exemple, un autre thread est bloqué dans sigwait() sur ce signal, il ne sera pas relancé.
L'implémentation de sigwait() par LinuxThreads installe un gestionnaire de signaux vide pour les signaux définis dans set durant l'attente. Comme les gestionnaires de signaux sont partagés par tous les threads, les autres threads ne doivent pas attacher leurs propres gestionnaires sur ces signaux, mais doivent bloquer ces signaux (ce qui est de toute façon recommandé -- voir la rubrique NOTES).
AUTEUR | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Thierry Vignaud <tvignaud AT mandriva DOT com> en 2000 et révisée le 19 novembre 2007.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 pthread_sigmask ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |