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 :

structure primitive sigaction


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut structure primitive sigaction
    Bonsoir, j'aimerais vous poser une question sur le bout de code suivant

    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
     
    struct sigaction s2;
     
    void traitementSignal(int s)
    {
     
        if(i!=5)
        {
            i++;
            printf("Signal %d reçu\n",i);
        }else{
             sigaction(SIGINT,&s2,NULL);
        }
     
    }
     
    int main()
    {
    	struct sigaction s;
        s.sa_handler=traitementSignal;
        sigemptyset(&s.sa_mask);
        sigaction(SIGINT,&s,&s2);
        while(1);
        return 0;
    }
    J'empêche donc 5 fois l'interruption du programme avant de remettre le comportement par défaut.

    Mais, j'aime pas trop le fait de mettre une variable en global comme ça...dans mon cas s2.

    Y aurait il un moyen de déclarer s2 dans le main afin de le passer en paramètre de traitementSignal ? Si oui comment le code va t'il changer au niveau des appels ?

    Merci d'avance.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    J'ai bien peur que non, c'est la faiblesse des signaux. Même la version étendue de la procédure de signal (avec le flag SA_SIGINFO) ne le permet pas.

    C'est aussi une force, car les signaux étant traités dans une interruption du code normal pouvant avoir lieu à tout moment (le seul moyen de faire une section critique étant de désactiver les signaux pendant ce temps-là), on est censé en faire le moins possible dans la fonction de traitement de signal.


    ...Par contre, au moins, pour faire plus propre, tu peux regrouper les différentes variables accédées par ta fonction de signal dans une structure, ainsi ça te fera une seule variable globale.
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/08/2012, 15h12
  2. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 15h32
  3. Primitive du noyau
    Par freud dans le forum Programmation d'OS
    Réponses: 5
    Dernier message: 25/11/2002, 03h17
  4. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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