[C] prog système linux, besoin d'une explication

prog système linux, besoin d'une explication [C] - C - Programmation

Marsh Posté le 06-03-2005 à 15:06:09    

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 :
  1. sigset_t ensemble:
  2. sigset_t ancien;
  3. int sigusr1_dans_masque = 0;
  4. sigemptyset (& ensemble);
  5. sigaddset (& ensemble, SIGUSR1);
  6. sigprocmask (SIG_BLOCK, & ensemble, & ancien);
  7. if (sigismember (& ancien, SIGUSR1)){
  8.     sigdelset(& ancien, SIGUSR1);
  9.     sigusr1_dans_masque = 1;
  10. }
  11. attente = 1;
  12. while(attente != 0){
  13.     sigsuspend (& ancien);
  14. }
  15. if (sigusr1_dans_masque)
  16.     sigaddset (& ancien, SIGUSR1);
  17. sigprocmask (SIG_SETMASK, & ancien, NULL);


 
Merci de votre aide :)


Message édité par nodus le 06-03-2005 à 16:49:32
Reply

Marsh Posté le 06-03-2005 à 15:06:09   

Reply

Marsh Posté le 06-03-2005 à 19:36:51    

Personne n'a d'idées :??:

Reply

Marsh Posté le 06-03-2005 à 21:43:54    

c'est pas le mm masque...
 
donc il initialise le masque &ensemble grace à sigemptyset
rajoute le SIGUSR1 dans le masque
masque le signal
 
puis si SIGUSR1 est masqué sur le masque &ancien, il le démasque
 

Reply

Marsh Posté le 06-03-2005 à 23:08:03    

Merci à toi  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed