nodus | Je suis en train de bouquiner le livre de Cristophe Blaess Programmation système en C sous Linux et je voulais avoir un petit truc sur un de ses codes sources (p162). Si j'ai bien compris il ajoute le signal SIGUSR1 au masque de bloquage grâce au premier sigprocmask() mais par la suite il attend ce même signal avec l'appel sigpending(), pourtant ce signal n'était pas bloqué ? L'appel sigpending() as t'il en quelque sorte préséance sur l'appel sigprocmask() ?
Code :
- sigset_t ensemble:
- sigset_t ancien;
- int sigusr1_dans_masque = 0;
- sigemptyset (& ensemble);
- sigaddset (& ensemble, SIGUSR1);
- sigprocmask (SIG_BLOCK, & ensemble, & ancien);
- if (sigismember (& ancien, SIGUSR1)){
- sigdelset(& ancien, SIGUSR1);
- sigusr1_dans_masque = 1;
- }
- attente = 1;
- while(attente != 0){
- sigsuspend (& ancien);
- }
- if (sigusr1_dans_masque)
- sigaddset (& ancien, SIGUSR1);
- sigprocmask (SIG_SETMASK, & ancien, NULL);
|
Merci de votre aide Message édité par nodus le 06-03-2005 à 16:49:32
|