Programmation en C sur les signaux

Résolu
blackdam Messages postés 332 Statut Membre -  
blackdam Messages postés 332 Statut Membre -
Bonjour à tous!
Voilà j'ai un petit problème, je doit absolument écrire un programme C qui compte les signaux qu'il reçoit et affiche ces
compteurs. en cherchant un peu j'ai trouvé ce code là :
#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void handler(int);
int nsig[NSIG];

int main(void)
{  int s;

   for (s = 1; s < NSIG; s++)
   {  if (signal(s, handler) == SIG_ERR)
         fprintf(stdout, "Je ne peux pas attraper signal no %d\n", s);
      nsig[s] = 0;
   }

   while (1) pause();
}


void handler(int s)
{  printf("Signal %d recu %d fois\n", s, ++nsig[s]);
}

Est-ce que quelqu'un peux m'aider à comprendre le programme?? je l'execute et il me met des trucs un peu bizare...
Merci de vos réponses!!

--
Plus t'avance moins vite, moins t'avance plus vite
Configuration: Linux
Firefox 1.0.7

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut

    Le programme va installer un nouveau gestionnaire pour chaque signal de numéro compris entre 1 et NSIG.
    On remet le tableau nsig à 0 dans tous les cas, ce qui est étrange. Ca ne serait pas plutôt :
    if (signal(s, handler) == SIG_ERR) {
             fprintf(stdout, "Je ne peux pas attraper signal no %d\n", s);
             nsig[s] = 0;
    }
    


    Et ensuite on fait une belle boucle infinie qui ne sert à rien lol.
    un simple : system("pause"); suffirait.

    Bonne journée
    5
  2. blackdam Messages postés 332 Statut Membre 35
     
    Merci, donc en fait ce programme ne m'est pas d'une grande utilité en fait...
    3
  3. blackdam Messages postés 332 Statut Membre 35
     
    --
    Plus t'avance moins vite, moins t'avance plus vite
    3