|
|
|
|
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 !
Configuration: Windows XP Internet Explorer 7.0
Tu peux commencer par regarder ici :
man sigaction Avec la doc tu devrais t'en sortir. Ensuite, il suffit juste de chercher quelques exemples, et ça devrait rouler ! Bonne chance |
Lis le man ça devrait suffire
man sigaction Bonne chance |
Merci de m'aider mamiemando c'est sympa !
|
Le programme écrit proprement ressemble plutôt à ça :
#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 |
Man sigaction !!!!!
|