Interruption sous linux en C
Résolu
A voir également:
- Interruption sous linux en C
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- Backtrack linux - Télécharger - Sécurité
- R-linux - Télécharger - Sauvegarde
- Linux mint 22.1 - Accueil - Linux
14 réponses
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
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
Merci mamiemando je vais jetter un oeil sur ce site, qui me semble d'ailleurs être en anglais, et moi j'suis blue english...
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
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
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...
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 !