Interruption sous linux en C
Résolu/Fermé
Chabanus
-
18 janv. 2008 à 12:27
mamiemando Messages postés 33654 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2025 - 26 janv. 2008 à 04:41
mamiemando Messages postés 33654 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2025 - 26 janv. 2008 à 04:41
Bonjour,
comme vous pouvez le savoir déjà, sous Linux, les signaux corréspondeent à des interruptions logicielles. donc pourrais-vous stp nous aider à trouver ce qui suit :
- le signal (nom & numéro) qui traite l'exception d'une division par zéro ?
- élaborer un prg en C qui déroute l'interruption : erreur de calcul en virgule flottante (Div par zéro)
- élaborer et exécuter un script qui affiche la liste des signaux disponibles et qui lance notre prg executable.
aussi pourrez vous nous donner quelques définitions claires et nettes sur les processus et interruptions ! ( le minimum à savoir)
Ps : Merci d'avance, saches que si on réussira notre Tp, ça sera bien grâce à vous !!
Je vous remercie d'avance !
comme vous pouvez le savoir déjà, sous Linux, les signaux corréspondeent à des interruptions logicielles. donc pourrais-vous stp nous aider à trouver ce qui suit :
- le signal (nom & numéro) qui traite l'exception d'une division par zéro ?
- élaborer un prg en C qui déroute l'interruption : erreur de calcul en virgule flottante (Div par zéro)
- élaborer et exécuter un script qui affiche la liste des signaux disponibles et qui lance notre prg executable.
aussi pourrez vous nous donner quelques définitions claires et nettes sur les processus et interruptions ! ( le minimum à savoir)
Ps : Merci d'avance, saches que si on réussira notre Tp, ça sera bien grâce à vous !!
Je vous remercie d'avance !
A voir également:
- Interruption sous linux en C
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Backtrack linux - Télécharger - Sécurité
- Linux live usb creator - Télécharger - Outils Internet
14 réponses
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
20 janv. 2008 à 15:24
20 janv. 2008 à 15:24
Le programme écrit proprement ressemble plutôt à ça :
Grosso modo tu prépares un handler qui va rattraper une exception (ici une division par 0). Ensuite en calculant c tu déclenche cette division par 0. Le handler rattrape l'exception, puis quitte le programme en retournant le code d'exécution EXIT_FAILURE.
Si tu as eu l'occasion de faire du java ou du c++ les blocs try{ }catch(...){ } c'est un peu la même idée.
Bonne chance
#include <signal.h> #include <stdio.h> #include <stdlib.h> void derouter_interuption(int signum){ printf("il y a eu une exception (signum = %d) !!!!! oups oups ^^ \n",signum); exit(EXIT_FAILURE); } int main(){ struct sigaction nouvelle_action; int a=1, b=0,c; nouvelle_action.sa_handler = derouter_interuption; sigemptyset(&nouvelle_action.sa_mask); sigaction(SIGFPE, &nouvelle_action, NULL); c = a/b; return EXIT_SUCCESS; }
Grosso modo tu prépares un handler qui va rattraper une exception (ici une division par 0). Ensuite en calculant c tu déclenche cette division par 0. Le handler rattrape l'exception, puis quitte le programme en retournant le code d'exécution EXIT_FAILURE.
(mando@cenedra) (~) $ gcc -W -Wall plop.c (mando@cenedra) (~) $ ./a.out il y a eu une exception (signum = 8) !!!!! oups oups ^^
Si tu as eu l'occasion de faire du java ou du c++ les blocs try{ }catch(...){ } c'est un peu la même idée.
Bonne chance
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
18 janv. 2008 à 12:57
18 janv. 2008 à 12:57
Tu peux commencer par regarder ici :
https://publications.gbdirect.co.uk//c_book/chapter9/signal_handling.html
Avec la doc tu devrais t'en sortir. Ensuite, il suffit juste de chercher quelques exemples, et ça devrait rouler !
Bonne chance
https://publications.gbdirect.co.uk//c_book/chapter9/signal_handling.html
man sigaction
Avec la doc tu devrais t'en sortir. Ensuite, il suffit juste de chercher quelques exemples, et ça devrait rouler !
Bonne chance
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
70
18 janv. 2008 à 13:16
18 janv. 2008 à 13:16
Merci mamiemando je vais jetter un oeil sur ce site, qui me semble d'ailleurs être en anglais, et moi j'suis blue english...
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
18 janv. 2008 à 14:19
18 janv. 2008 à 14:19
Lis le man ça devrait suffire
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/sigaction.2.html
Bonne chance
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/sigaction.2.html
man sigaction
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
70
18 janv. 2008 à 17:43
18 janv. 2008 à 17:43
Merci de m'aider mamiemando c'est sympa !
Un camarade a moi a fait cela, et j'aimerai qu'on m'explique le programme si c'est possible.
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
void derouter_interuption(int signum)
{
printf("il y a u une exeption!!!!! oups oups ^^ \n");
exit(EXIT_FAILURE);
}
int main(void)
{
struct sigaction nouvelle_action;
nouvelle_action.sa_handler = derouter_interuption;
sigemptyset(&nouvelle_action.sa_mask);
sigaction(SIGFPE, &nouvelle_action, NULL);
int a=1, b=0;
int c = a/b;
return EXIT_SUCCESS;
}
Je vous remercie d'avance
Un camarade a moi a fait cela, et j'aimerai qu'on m'explique le programme si c'est possible.
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
void derouter_interuption(int signum)
{
printf("il y a u une exeption!!!!! oups oups ^^ \n");
exit(EXIT_FAILURE);
}
int main(void)
{
struct sigaction nouvelle_action;
nouvelle_action.sa_handler = derouter_interuption;
sigemptyset(&nouvelle_action.sa_mask);
sigaction(SIGFPE, &nouvelle_action, NULL);
int a=1, b=0;
int c = a/b;
return EXIT_SUCCESS;
}
Je vous remercie d'avance
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
70
18 janv. 2008 à 20:04
18 janv. 2008 à 20:04
Merci comme même ^^
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
70
24 janv. 2008 à 13:11
24 janv. 2008 à 13:11
Je te remercie pour ta réponse mamiemando c'est gentil, bonne continuation pour toi ;)
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
24 janv. 2008 à 17:21
24 janv. 2008 à 17:21
De même !
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
70
25 janv. 2008 à 13:20
25 janv. 2008 à 13:20
SaLUT...
Une derniere requête si possible...Je souhaite changer l'apparence du programme tout en ayant le même resultat lors de l'execution...Je vous remercie d'avance...
Une derniere requête si possible...Je souhaite changer l'apparence du programme tout en ayant le même resultat lors de l'execution...Je vous remercie d'avance...
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
25 janv. 2008 à 14:27
25 janv. 2008 à 14:27
Je n'ai pas compris
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
70
25 janv. 2008 à 15:59
25 janv. 2008 à 15:59
Modifier le programme, à titre d'exemple: Changer les variables prédéfinies, modifier l'emplacement des fonctions...En résumé j'aimerai changer le programme de manière à ce que l'ancien ne ressemble plus au nouveau, tout en gardant bien sur le même résultat a l'exécution...Merci !
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
25 janv. 2008 à 19:21
25 janv. 2008 à 19:21
Ahah non désolée ça fait partie de l'exercice :-)
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
70
25 janv. 2008 à 22:20
25 janv. 2008 à 22:20
mais le changement est mimim xD, merci comme même ...
Une simple question : Quel est le type de sa_handler ? merci d'avance...
Une simple question : Quel est le type de sa_handler ? merci d'avance...
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
26 janv. 2008 à 04:41
26 janv. 2008 à 04:41
man sigaction !!!!!
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/sigaction.2.html
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/sigaction.2.html