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

Linux Discussion :

communication process, shell


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    embedded software engineer
    Inscrit en
    Juin 2002
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : embedded software engineer

    Informations forums :
    Inscription : Juin 2002
    Messages : 181
    Par défaut communication process, shell
    Bonjour,

    J'ai conçu une application C qui gère plusieurs tables dynamique de variables(que l'on peut appeler mapping), cela ressemble en très simple à une base de donnée.

    exemple de variable dans le mapping:
    I.1.234.12
    M.23.89.54

    Je souhaite à partir du shell accéder à ce mapping avec par exemple comme syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $cat /sys/class/MonApp/mapping/I/1/234/12
    $echo 32 > /sys/class/MonApp/mapping/I/1/234/12
    c'est idée...
    Comment je peut accèder à partir du shell(sans code compilé) à ce "mapping logique"?
    Quel principe de codage en 'C' doit être utilisé?
    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Je ne suis pas sûr d'avoir bien compris mais je tente quand même une approche.

    MonApp est ton application C. Donc elle doit être capable de lire des variables qui lui sont fournis en paramètre.

    A partir de là la bonne syntaxe de ton application serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cat /sys/class/MonApp /mapping/I/1/234/12
    La différence réside dans l'espace entre /sys/class/MonApp et le paramètre.

    Maintenant je suis peut être complétement à côté de la plaque

  3. #3
    Membre confirmé
    Profil pro
    embedded software engineer
    Inscrit en
    Juin 2002
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : embedded software engineer

    Informations forums :
    Inscription : Juin 2002
    Messages : 181
    Par défaut
    MonApp est l'application écrite "C" ( que je développe).

    Cette application est lancée au démarrage de la machine.

    Et je souhaite à tout moment je peux acon accèder à ma machine en cli(sans que je puisse stoppêr l'application), et avec le shell manipuler les variables du mapping.

    Je ne peux pas passer de paramètre à mon application car elle est déjà en cours d'exécution depuis longtemps.

    Je souhaite en quelque sorte faire du RPC avec mon appli en ligne de commande, ou idéalement faire comme l'arborescene virtuel du kernel /proc /sys qui permet d'interroger le kernel.

    Mon appli est un peu un plc automate avec des variables que je souhaite interroger à partir du shell.

    J'espère avoir été plus précis.

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Je comprends mieux maintenant.

    Le répertoire proc est alimenté par un tas d'applications. MonAppli tourne en tâche de fond. Soit. Elle doit donc créer et maintenir les informations auxquelles tu veux accéder.

    Par exemple elle crée les répertoires "/proc/mapping/I/1/234/12" (c'est un exemple). Si une information change MonAppli met à jour les répertoires ou les fichiers en fonction.

    En même temps tu peux décider qu'un fichier dans un répertoire particulier te permette de communiquer vers MonAppli.

    De cette manière tu peux accéder aux répertoires/fichiers via le shell comme tu le désires.

  5. #5
    Membre confirmé
    Profil pro
    embedded software engineer
    Inscrit en
    Juin 2002
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : embedded software engineer

    Informations forums :
    Inscription : Juin 2002
    Messages : 181
    Par défaut
    2 questions:
    1-je pensais que la gestion des fs /proc et /sys étaient gérer uniquement par le kernel et ses modules. est-ce qu'une appli en user space peut crée des entrées dans ses dossiers? si oui, comment?

    2-je ne veux pas créer un objet/instance pour chaque fichiers dans /proc car j'ai 3000 variables. Je veux plutôt créer un objet/instance /proc/mapping/ qui contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procfs_fs_ops mon_dossier {
    .list : Ma_fonction_lister_dossiers(string path);
    .open : Ma_fonction_openfile(string path);
    .read : Ma_fonction_readfile(string path);
     .write : Ma_fonction_writefile(string path);
     .close : Ma_fonction_closefile(string path);
     }
    Je voudrais chaque lecture/écriture dans /proc/mapping accède à la fonction Ma_fonction_openfile() passant en paramètre le chemin du fichier demandé.

    est-ce possible?

  6. #6
    Membre chevronné

    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Par défaut
    Si tu veux lancer un programme qui communique avec ton application tournant en tâche de fond, il y a plusieurs moyens.

    Par exemple tu pourrais communiquer par fichier -- si un fichier est créé dans tel répertoire, ton application le lit et l'efface (consomme) puis donne une réponse. Bien sûr je ne recommande pas de faire comme ça

    Je pense que le moyen le plus simple c'est les sockets. Ca marche à peu près de la même façon sauf que l'envoi d'un message ne passe pas par le système de fichiers, les données circulent directement dans le socket.

Discussions similaires

  1. Réponses: 20
    Dernier message: 28/10/2010, 11h19
  2. Réponses: 4
    Dernier message: 23/03/2010, 21h34
  3. communication entre shell et ordonnanceur
    Par lamine1987 dans le forum Linux
    Réponses: 2
    Dernier message: 20/05/2009, 19h09
  4. QDBUS communication process
    Par escape dans le forum Qt
    Réponses: 4
    Dernier message: 09/01/2008, 17h35
  5. Réponses: 2
    Dernier message: 05/12/2007, 18h23

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