Traitement des signaux
Résolu
Bonjour,
Dans un programme, je traite des signaux unix, tels que SIGALRM, ...
Pour ce, j'ajoute le signal dans un set (type sigset_t)
Exemple :
Plus loin et plus tard dans le programme, je voudrais savoir si le signal SIGALRM est toujours présent dans le set sigset_wrk.
Existe-t-il une macro du genre FD_ISSET (utilisée sur un fd_set) me permettant de savoir si un signal est toujours présent dans sigset_wrk?
Environnement : Sun Solaris
Dans un programme, je traite des signaux unix, tels que SIGALRM, ...
Pour ce, j'ajoute le signal dans un set (type sigset_t)
Exemple :
sigset_t sigset_wrk; sigaddset( sigset_wrk, SIGALRM); sigaddset( sigaddset( SIGCHLD);
Plus loin et plus tard dans le programme, je voudrais savoir si le signal SIGALRM est toujours présent dans le set sigset_wrk.
Existe-t-il une macro du genre FD_ISSET (utilisée sur un fd_set) me permettant de savoir si un signal est toujours présent dans sigset_wrk?
Environnement : Sun Solaris
A voir également:
- Traitement des signaux
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Traitement de texte gratuit - Guide
- Ce logiciel gratuit et léger est parfait pour remplacer Word, même sur un vieux PC - Guide
- Traitement de texte gratuit open office - Télécharger - Suite bureautique
- Dictionnaire des maladies et traitement - Télécharger - Bureautique
6 réponses
Dans l'absolu, vu que cette structure est définie dans <signal.h> le plus simple c'est de regarder dans ce header (/usr/include/signal.h). Mais si on y regarde, apparemment elle peut varier selon l'OS ce n'est pas la bonne approche.
Par contre, d'après ce lien, il semblerait qu'une fonction existe pour permette de s'en abstraire :
http://www.gnu.org/software/libc/manual/html_node/Signal-Sets.html
Apparemment c'est la fonction sigismember() :
Du coup je dirais un truc du genre :
Bonne chance
Par contre, d'après ce lien, il semblerait qu'une fonction existe pour permette de s'en abstraire :
http://www.gnu.org/software/libc/manual/html_node/Signal-Sets.html
Apparemment c'est la fonction sigismember() :
-- Function: int sigismember (const sigset_t *set, int signum) The sigismember function tests whether the signal signum is a member of the signal set set. It returns 1 if the signal is in the set, 0 if not, and -1 if there is an error. The following errno error condition is defined for this function: EINVAL The signum argument doesn't specify a valid signal.
Du coup je dirais un truc du genre :
int sigalarm_is_set = (sigismember(sigset_wrk, SIGALARM) == 1);
Bonne chance
À défaut de définir une variable qui mémorise cette information, je te suggère de regarder dans le man pour voir quelles fonctions connexes à sigaddset sont suggérées, il y en a sans doute une qui fera ton bonheur :
Mais à première vue j'ai l'impression que cette information est simplement stockée dans ton sigset_t, non ?
man sigaddset
Mais à première vue j'ai l'impression que cette information est simplement stockée dans ton sigset_t, non ?
Bonjour,
Tu as raison, l'information est stockée dans le sigset_t, mais comment accéder à l'information qui m'intéresse (SIGALRM dans mon cas) et quelle est la structure de cette information. Malheureusement, le man de sigaddset ne m'apprend rien à ce sujet.
Je suppose que le sigset_t peut être indicé par le numéro du signal.
De toute façon, merci pour ta réponse si rapide même si elle ne répond pas directement totalement à ma question. Si tu as une description de la structure, envoie-la moi. Merci d'avance.
Tu as raison, l'information est stockée dans le sigset_t, mais comment accéder à l'information qui m'intéresse (SIGALRM dans mon cas) et quelle est la structure de cette information. Malheureusement, le man de sigaddset ne m'apprend rien à ce sujet.
Je suppose que le sigset_t peut être indicé par le numéro du signal.
De toute façon, merci pour ta réponse si rapide même si elle ne répond pas directement totalement à ma question. Si tu as une description de la structure, envoie-la moi. Merci d'avance.
Bonjour,
Il existe un macro sigismember qui retorne 1 si le signal fait partie du set, sinon le retour est 0
Il existe un macro sigismember qui retorne 1 si le signal fait partie du set, sinon le retour est 0
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question