Connaître le masque de blocage des signaux

Problème

Vous voulez connaître les signaux filtrés par le masque de blocage des signaux.

Solution

Utilisez sigprocmask() avec un masque vide :


sigset_t vide, masque_actuel; 
sigemptyset (&vide); 
sigprocmask (SIG_BLOCK, &vide, &masque_actuel);
 

Discussion

En ajoutant un masque de signaux vide, vous ne changez pas le masque en place. Par conséquent, ici, sigprocmask() retourne le masque actuel via le pointeur fourni en troisième argument.

Pour tester si un signal se trouve dans le masque, vous pouvez utiliser sigismember(). Par exemple, pour tester si le masque contient le signal TERM, exécutez sigismember(&masque, SIGTERM) qui renvoie 1 si oui, sinon 0.

Prototypes


#include <signal.h> 
int sigprocmask (int how, const sigset_t *set, sigset_t *oset); 
int sigismember (const sigset_t *set, int signo);
 

Voir aussi les pages de manuel des fonctions sigprocmask() et sigemptyset().

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Bloquer des signaux
Suivant
Savoir si un signal a été bloqué