Programmation en C sur les signaux
Résolu
blackdam
Messages postés
332
Statut
Membre
-
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à :
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!!
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!!
A voir également:
- Programmation en C sur les signaux
- Application de programmation - Guide
- Pas de signal tv sur certaines chaînes - Guide
- Mettre en veille un programme - Guide
- Comment programmer un mail sur gmail - Guide
- Programmer un message sur iphone - Guide
3 réponses
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 :
Et ensuite on fait une belle boucle infinie qui ne sert à rien lol.
un simple : system("pause"); suffirait.
Bonne journée
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