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 :

IPC - Files de messages - Structure des messages


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 18
    Points
    18
    Par défaut IPC - Files de messages - Structure des messages
    Bonjour à tous,

    Je travaille actuellement sur un projet d'Architecture des systèmes d'exploitation dans lequel je dois (entre-autre) simuler la sychronisation d'une montre via un serveur horaire.
    Pour communiquer entre le père (la montre locale) et son fils (serveur horaire), je souhaite utiliser une file de message. Dans <sys/msg.h> on trouve bien un modèle pour la structure du message à utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Template for struct to be used as argument for 'msgsnd' and 'msgrcv'.
    struct msgbuf {
       long int mtype; // Type of received/sent msg
       char mtext[1];
    }
    Sur le peu d'explications que j'ai pu trouver sur le net, on explique trois choses :
    1) mtype>0 (très important !!! mais apparement personne ne sait pk...)
    2) Qu'il faut créer un tableau mtext beaucoup plus grand que juste mtext[1] (ceci est compréhensible)
    3) Que lorsque l'on spécifie la taille du message dans un des arguments de msgsnd/msgrcv il faut spécifier lenght=sizeof(struct msgbuf)-sizeof(long int);


    Mais voilà pour faire passer un "Hello" tout se passe bien avec cette structure. Moi ce que je souhaite c'est faire passer 3 entiers. Ais-je le droit de déclarer la structure du message ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct my_msg {
       int hour;
       int min;
       int sec;
    }
    Dans ce cas quelle taille devrais-je spécifier aux primitives msgrcv et msgsnd ?

    Merci d'avance !

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Le type doit être strictement >0 pour que tu puisses distinguer/sélectionner tes messages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct my_msg {
        long mtype;
         int a,b,c;
    }
     
    my_msg msg;
    <..>
    Pour la taille cela devrait être sizeof(my_msg) -sizeof(long)

    EDIT²: a vrai dire ce -sizeof(long) je ne comprends pas trop aussi sizeof(my_msg) devrait suffir.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    Merci à toi hegros,

    J'ai donc déclaré mon message comme celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct my_msg {
        long mtype;
        int hour, min, sec;
    }
    et la taille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sizeof(struct my_msg)-sizeof(long)
    Il semblerait que sa fonctionne !

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

Discussions similaires

  1. Structure des messages SOAP
    Par azizdz dans le forum Autres Solutions d'entreprise
    Réponses: 1
    Dernier message: 23/05/2010, 14h03
  2. [REGEXP] Trouver des messages dans des fichiers
    Par panda31 dans le forum Général Python
    Réponses: 2
    Dernier message: 26/11/2008, 14h37
  3. Réponses: 3
    Dernier message: 11/06/2003, 00h18

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