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

POSIX C Discussion :

sa_handler une fois avec un & une fois sans ?!


Sujet :

POSIX C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut sa_handler une fois avec un & une fois sans ?!
    Bonjour,

    J'aurais besoin de vos lumières sur qqch qui me préoccupe depuis que je m'en suis rendu compte !
    Pourquoi lors de la gestion d'un signal, une fois on met un & devant l'appel de la fonction qui gère le signal et une autre fois pas ! Petit exmple pour être un peu plus claire :

    Exemple 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void handler(int sig){
       printf("signal SIGINT reçu\n");
       exit(0);
    }
    
    int main(){
       struct sigaction nvt, old;
       memset(&nvt,0,sizeof(nvt));
       nvt.sa_handler=&handler;
       sigaction(SIGINT,&nvt,&old);
       pause();
    }
    Exemple 2 :

    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
     
     
    void Recuperation(int sig) {
       static compt = 0;
       if (++compt == 5) {
          printf("J’en ai assez!!\n");
          exit(0);
       } else {
          printf("OK je recupere le signal SIGINT\n");
       }
    }
     
    int main() {
       struct sigaction nvt, old;
       memset(&nvt,0,sizeof(nvt)); 
       nvt.sa_handler = Recuperation;
       sigaction(SIGINT,  &nvt, &old);
       printf("Taper 5 ^C pour arreter le programme\n");
       while(1);
    }
    Pourquoi dans l'un il y a un & et pas dans l'autre ?!

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Je pense que les 2 sont rigoureusement identiques.

    Quand on parle d'une fonction sans mettre de (), on parle de son adresse.

    donc ecrire truc = &fontion;
    et truc = fonction;

    c'est pareil
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Cela n'a rien à voir avec la norme POSIX, c'est relatif au langage C, voici ce que dit la norme à ce sujet:
    6.3.2 Other operands
    6.3.2.1 Lvalues, arrays, and function designators

    ...
    4 A function designator is an expression that has function type. Except when it is the
    operand of the sizeof operator or the unary & operator, a function designator with
    type ‘‘function returning type’’ is converted to an expression that has type ‘‘pointer to
    function returning type’’.
    Cordialement.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut
    Merci pour ces infos, c'est ce que je voulais savoir !
    Continuant mes révisions, j'ai d'autres soucis donc rendez-vous pour un nouveau sujet !

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 21/06/2012, 15h07
  2. encore une bizarrerie avec un push cette fois
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/06/2010, 18h37
  3. boucle simple dans une dataGrid avec quand même une erreur !
    Par fkr dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/11/2005, 15h04
  4. Réponses: 6
    Dernier message: 26/07/2005, 10h20

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