Publicité
+ Répondre à la discussion Actualité déjà publiée
Affichage des résultats 1 à 10 sur 10
  1. #1
    Expert Confirmé
    Avatar de Metalman
    Homme Profil pro Fabrice Boissier
    Ingénieur systèmes et réseaux
    Inscrit en
    juin 2005
    Messages
    960
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice Boissier
    Âge : 25
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : juin 2005
    Messages : 960
    Points : 2 879
    Points
    2 879

    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 du Club Avatar de fanick
    Profil pro
    Inscrit en
    juin 2003
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Bénin

    Informations forums :
    Inscription : juin 2003
    Messages : 45
    Points : 50
    Points
    50

    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
    Expert Confirmé
    Avatar de Metalman
    Homme Profil pro Fabrice Boissier
    Ingénieur systèmes et réseaux
    Inscrit en
    juin 2005
    Messages
    960
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice Boissier
    Âge : 25
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : juin 2005
    Messages : 960
    Points : 2 879
    Points
    2 879

    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 Expert Avatar de Trademark
    Inscrit en
    février 2009
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : février 2009
    Messages : 762
    Points : 1 202
    Points
    1 202

    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
    Expert Confirmé
    Avatar de Metalman
    Homme Profil pro Fabrice Boissier
    Ingénieur systèmes et réseaux
    Inscrit en
    juin 2005
    Messages
    960
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice Boissier
    Âge : 25
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : juin 2005
    Messages : 960
    Points : 2 879
    Points
    2 879

    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 Expert Avatar de Trademark
    Inscrit en
    février 2009
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : février 2009
    Messages : 762
    Points : 1 202
    Points
    1 202

    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
    Expert Confirmé
    Avatar de Metalman
    Homme Profil pro Fabrice Boissier
    Ingénieur systèmes et réseaux
    Inscrit en
    juin 2005
    Messages
    960
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice Boissier
    Âge : 25
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : juin 2005
    Messages : 960
    Points : 2 879
    Points
    2 879

    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
    Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2009
    Messages : 2 635
    Points : 6 355
    Points
    6 355

    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" ?
    Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a

    Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^

    Pour vos problèmes d'embarqué, utilisez le forum dédié !

  9. #9
    Expert Confirmé
    Avatar de Metalman
    Homme Profil pro Fabrice Boissier
    Ingénieur systèmes et réseaux
    Inscrit en
    juin 2005
    Messages
    960
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice Boissier
    Âge : 25
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : juin 2005
    Messages : 960
    Points : 2 879
    Points
    2 879

    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
    Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2009
    Messages : 2 635
    Points : 6 355
    Points
    6 355

    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é
    Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a

    Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^

    Pour vos problèmes d'embarqué, utilisez le forum dédié !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •