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 :

Introduction aux POSIX MQ


Sujet :

C

  1. #1
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut Introduction aux POSIX MQ
    Bonsoir,

    http://fabrice-boissier.developpez.c...tion-posix-mq/

    Voici mon 1er article !
    Il concerne les POSIX MQ : que sont-elles, comment les utiliser, et l'utilité des MQ (génériques) dans le monde professionnel.
    Un lien vers un petit projet est également fourni dans l'article à propos d'un exemple plus complet utilisant les fonctionnalités avancées des POSIX MQ.

    Vos commentaires sont bienvenus !

    Bonne lecture !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  2. #2
    Membre régulier Avatar de fanick
    Profil pro
    Responsable informatique
    Inscrit en
    Juin 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Bénin

    Informations professionnelles :
    Activité : Responsable informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 56
    Points : 111
    Points
    111
    Par défaut
    Merci Fabrice
    Je signale juste un dead link sur les PDF et ePub ...
    Si vous vous endormez en pensant qu'une chose est impossible à réaliser, vous risquez d'être réveillé par le bruit que fait quelqu'un d'autre en la réalisant.

  3. #3
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Ah... en effet.
    La génération n'a pas placé les fichiers là où je les attendais...

    Dès que je peux j'ajoute ces 2 versions ! (ce soir ce sera réglé)
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  4. #4
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Salut,

    Bon article À mon avis ce qu'il manque c'est l'output du programme, on aime bien savoir ce que ça fait sans devoir le compiler nous-même

    Dans ce genre de présentation d'API je trouve que ce qu'ils manquent systématiquement c'est un programme un peu réel, un peu long que l'utilisateur pourra lire pour découvrir les bonnes pratiques. Tu n'es pas non plus obligé de le décrire. Enfin c'est juste une idée

  5. #5
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Il est inclus !

    Il y a la toute petite source pour la personne très pressée avec les fonctionnalités minimales, puis dans le chapitre "Utilisation Complète des POSIX MQ" il y a un lien vers une source contenant 2 exemples :
    1) Exemple simple faisant un fork avec des échanges un peu plus complexes que le code écrit sur l'article
    2) Exemple avancé faisant des mq_notify et des mq_timedsend/mq_timedreceived

    Au final, on peut compter 3 exemples de complexité progressive.
    Peut être que j'aurais dû mieux nommer les chapitres et inclure des liens plus explicites vers le projet.
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  6. #6
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Ha, c'est ma faute de ne pas avoir tout lu Sinon tu peux remplacer

    Utilisation Complète des POSIX MQ
    par

    Projet: Utilisation Complète des POSIX MQ
    Ou quelque chose dans ce style, comme ça on voit direct qu'il y a un projet.

  7. #7
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    J'hésitais à le faire, mais en effet... je vais le faire.
    Il y a quelques détails que je dois revoir dans le document (principalement non-visibles), donc ce soir je m'en charge !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  8. #8
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Je lis vite fait et je vois quelques erreurs de rédaction.

    Par exemple, FreeBSD se contente de 64 niveaux de priorités, tandis que Linux propose plus de 32 000 d'entre eux.
    "D'entre eux" me semble superflu.

    il faut évidemment l'ouvrir ou la créer avec cette la fonction mq_open().
    Il y a souvent trop de lignes vides. Exemple :
    Le 1er argument est le descripteur de la MQ (on l'a reçu lors du mq_open()).


    Le 2e argument est le message que l'on souhaite envoyer. Il ne doit pas être plus grand que la taille déclarée à l'initialisation de la file !


    Le 3e argument est la taille du message envoyé.


    Le 4e argument est la priorité avec laquelle on souhaite envoyer le message.
    Il y a aussi quelques virgules en trop, comme dans :
    Les demandes seront de priorité 0, et l'alerte pourra être de priorité 1 à 31.
    En français, on ne met pas de majuscules à chaque mot des titres (seulement en anglais il me semble). Exemple :
    V-F. Exemple Complet Simple
    La clock utilisée sera prioritairement celle utilisée par le module temps réel
    Peu clair. L'anglicisme clock peut être facilement éviter.

    Voici la structure timespec
    Tu pourrais dire pour les novices dans quelle en-tête on la trouve


    Dans l'ensemble, j'ai trouvé clair et bien écrit. Je ne connaissais pas les MQ, ça m'a donné un bon aperçu. Je me demande juste comme "synchroniser" des lectures / écritures. Quand un message est posté, qui va le lire ? Il n'y a pas de destinataire visiblement, alors comment mettre en place un mécanisme plus complexe que "une personne écoute, les autres lui envoient des messages" ?

  9. #9
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Oulalala...
    Attention... les MQ c'est... "un concept" !
    Ca parait débile, mais il y a tellement de produits/technologies/fonctions avec l'expression "MQ" que c'est beaucoup de choses à la fois...

    Bref, mais les POSIX MQ font un très bon résumé d'introduction (parce que sur les MQTT ou le WMQ/MQSeries tu dois parfois gérer "physiquement" la file en plus de son nom + ses channels (IP:Port) + ...)

    Pour la synchro : il n'y en a pas hormis les quelques events "la file est vide".
    Comme ça reste local à la machine, on peut supposer que ça permettrait à un pool de threads/processus de piocher un travail à réaliser, un nom de fichier à traiter, etc...
    Pour identifier un destinataire, il faut utiliser les "vraies" MQ comme WMQ/MQSeries qui historiquement imposent d'indiquer un destinataire lors de l'envoi d'un message (mais depuis quelques années des files anonymes similaires aux POSIX MQ sont implémentées dedans).


    Pour la correction : ça a été lu, relu, rerelu énormément de fois en section rédaction.
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  10. #10
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Je sous-entendais MQ Posix même si je découvre les MQ en général.

    Et oui mais cela ne garantit pas que tout a été détecté

Discussions similaires

  1. [LG]Introduction aux pointeurs
    Par John_win dans le forum Langage
    Réponses: 7
    Dernier message: 22/11/2003, 11h11

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