Savoir si un signal a été bloqué

Problème

Vous voulez savoir si un signal est bloqué et en attente d’être traité.

Solution

Utilisez sigpending() qui remplit un masque de signaux, puis testez avec sigismember() si le masque contient le signal en question.

Discussion

Pour tester si le signal TERM est bloqué, exécutez les lignes suivantes :


sigset_t masque_test; 
sigpending (&masque_test); 
if (1 == sigismember (&masque_test, SIGTERM)) 
  printf ("Le signal TERM est bloqué\n");
 

Prototypes


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

Voir aussi les pages de manuel des fonctions sigpending() et sigismember().

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
Connaître le masque de blocage des signaux
Suivant
Intercepter [Ctrl] C