IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Interruption en C


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2007
    Messages : 165
    Par défaut Interruption en C
    Salut !
    Notre professeur nous a ecrit ce programme et a dit qu'il l'expliquerai la semaine prochaine, et je voudrai le comprendre avant...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #include <signal.h> 
    #include <stdio.h> 
    #include <stdlib.h> 
     
    void derouter_interuption(int signum) //pourquoi Void ? pourquoi avoir mit signum comme parametre ?
    { 
    printf("il y a u une exeption!!!!! oups oups ^^ \n"); 
    exit(EXIT_FAILURE); // a quoi sert cette fonction ?
    } 
     
    int main(void) 
    { 
    struct sigaction nouvelle_action; //que veut dire sigaction ?
     
    nouvelle_action.sa_handler = derouter_interuption; //que veut dire sa_handler ?
    sigemptyset(&nouvelle_action.sa_mask);  // que veut dire sigemptyset, sa_mask ?
     
     
    sigaction(SIGFPE, &nouvelle_action, NULL); // pourquoi avoir mit SIGFPE comme parametre ?
     
     
    int a=1, b=0; 
    int c = a/b; 
     
    return EXIT_SUCCESS; //// a quoi sert cette fonction ?
     
    }
    Je vous remercie d'avance !

  2. #2
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    il faut faire un peut d'effort pour pouvoir etre capable de comprendre

    pour la signature de la fonction signature, c'est la signature d'appelle ... il faut qu'elle soit comme ca pour que la fonction signaction puisse l'appeller ????


    EXIT() --- > tu sais pas c'est quoi exit() ---> il faut voir un livre de C pour ça

    SIGPFE c'est macro présentant un signale du système !!!!!

    encore une foix, il tu faut plus de temps avec les livre de C !!!!

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Voici les pages de man correspondantes:
    sigaction
    sigemptyset

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2007
    Messages : 165
    Par défaut
    Merci pour vos réponses vous êtes sympa, qu'est-ce qu'on ferait sans vous .
    Dites-moi seulement pourquoi avoir mit la fonction vide (void) et avoir mit signum en parametre (int signum)...Je vais chercher le reste seul...Merci !!!

  5. #5
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par Chabanus Voir le message
    Merci pour vos réponses vous êtes sympa, qu'est-ce qu'on ferait sans vous .
    Dites-moi seulement pourquoi avoir mit la fonction vide (void) et avoir mit signum en parametre (int signum)...Je vais chercher le reste seul...Merci !!!
    d'aprés les manpages : la signature ( le format ) de la fonction callback de la fonction sigaction doit être comme ça : void fonction(int num) !!!

    voila !!!

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par Chabanus Voir le message
    Salut !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("il y a u une exeption!!!!! oups oups ^^ \n");
    Attention, une interruption et une exception sont deux choses differentes. De plus, il faut que tu te rendes compte que ce n'est pas du C standard que tu donnes la, mais de la gestion des signaux, qui est du ressort (et donc depend) du systeme d'exploitation.
    Enfin, j'ai du mal a croire que ce printf() fasse partie du code fournit par ton professeur, ou alors le niveau a fichtrement baisse dans l'enseignement francais...

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Chabanus Voir le message
    Merci pour vos réponses vous êtes sympa, qu'est-ce qu'on ferait sans vous .
    Dites-moi seulement pourquoi avoir mit la fonction vide (void) et avoir mit signum en parametre (int signum)...Je vais chercher le reste seul...Merci !!!
    Citation Envoyé par Man de sigaction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct sigaction {
        void     (* sa_handler)   (int);
        void     (* sa_sigaction) (int, siginfo_t *, void *);
        sigset_t    sa_mask;
        int         sa_flags;
        void     (* sa_restorer)  (void);
    }
    Parce que le prototype de cette fonction est fixé par le type du champ sa_handler de l'objet de type struct sigaction. On voit ci-dessus que ce champ est de type pointeur sur une fonction ne renvoyant rien (void) et prenant un entier de type int en argument.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2007
    Messages : 165
    Par défaut
    en faite c'est une interruption en linux ...et ce programme a été donner par un professeur algérien...
    On a mit void parceque la fonction ne va pas retourner de valeur non ? et on a mit signum car c'est le type de signal qui va derouter l'exception !

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Le terme "Exception" ici est parfaitement valide, car le signal utilisé est SIGFPE.
    Et FPE est un sigle signifiant "Floating Point Exception", soit "Exception dans un calcul à Virgule Flottante".
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    printf dans un signal? J'espere qu'il va expliquer pourquoi le fonctionnement est aleatoire.

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2007
    Messages : 165
    Par défaut
    Pourquoi avoir déclarer sigaction dans une strucutre ?

  12. #12
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Chabanus Voir le message
    Pourquoi avoir déclarer sigaction dans une strucutre ?
    Il definit une variable de type struct sigaction, c'est different.

  13. #13
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2007
    Messages : 165
    Par défaut
    Ce programme n'est pas un script mais un programme en c sous linux.

    Voici l'enoncer:
    comme vous pouvez le savoir déjà, sous Linux, les signaux corréspondent à des interruptions logicielles.
    - 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.

Discussions similaires

  1. Utiliser l'interruption clavier
    Par Ninkosen dans le forum x86 16-bits
    Réponses: 7
    Dernier message: 28/03/2003, 01h01
  2. interruption clavier
    Par pyrostan dans le forum C
    Réponses: 4
    Dernier message: 13/01/2003, 17h33
  3. interruption materiel port parrallele
    Par pyrostan dans le forum C
    Réponses: 2
    Dernier message: 13/01/2003, 08h22
  4. Tracer une ligne droite sans les interruptions
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 25/11/2002, 01h22
  5. Bouquins d'Assembleur - interruptions matérielles
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 12/11/2002, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo