Programmation en C sur les signaux
Résolu
blackdam
Messages postés
327
Date d'inscription
Statut
Membre
Dernière intervention
-
blackdam Messages postés 327 Date d'inscription Statut Membre Dernière intervention -
blackdam Messages postés 327 Date d'inscription Statut Membre Dernière intervention -
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