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 :

mkfifo sur 2 fd différents (passerelle)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 41
    Par défaut mkfifo sur 2 fd différents (passerelle)
    Bonjour,

    Je voudrais faire communiquer 2 applis configurées chacune sur un port série.
    Dans la vraie vie je peux faire tourner les 2 applis sur la même machine et boucler les 2 ports séries l'un sur l'autre.
    J'aimerais me passer de ces ports série physiques (utilisation en VM par exemple), mais je ne trouve pas la commande qu'il faut.

    Je pourrais utiliser mkfifo, avec 1 appli qui crée 2 fd "A" et "B", qui lit dans "A" et écrit dans "B" et qui lit dans "B" pour écrire dans "A".
    Ainsi je fais un pont entre 2 ports.

    Mais n'existe-t-il pas une commande qui permet de faire ce pont directement?

    La commande pipe(), ne semble pas faire l'affaire non plus car elle ne fonctionne que dans un seul sens.
    Quoique, il serait en fait plus simple de coder la passerelle avec pipe (mais avec 2 appels).

    Bref, si il existe une commande qui fait ça directement, ça serait plus simple que de réinventer la roue

    Merci!

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    La comm à travers le port série, je sais pas faire.

    Concernant ta question sur pipe(), c'est vrai que la fonction à laquelle on passe un tableau de 2 int remplit l'élément[0] du tableau avec un descripteur de lecture et l'élément[1] avec un descripteur d'écriture. Et donc généralemnt un processus va lire et l'autre va écrire mais rien n'interdit aux 2 processus d'utiliser alternativement l'élement[0] et [1] afin de pouvoir lire et écrire tous les deux. Avec une bonne synchro, ça marche.
    Toutefois si t'utilises un pipe mémoire, tes 2 processus doivent tous deux hériter de la mémoire contenant le tableau donc ils doivent être liés père/fils.

    Concernant le fichier pipe (fifo), même principe. Généralement un processus lit le fichier et un autre écrit dedans mais avec une bonne synchro, les deux peuvent à la fois lire et écrire. Et tes deux processus peuvent être totalement indépendants. Mais ils doivent être tous deux sur la même machine (ou du moins avoir accès tous deux au fichier pipe donc imaginons que ce fichier pipe soit sur un répertoire NFS, 2 processus appartenant à 2 machines différentes peuvent communiquer si les 2 machines ont accès au répertoire NFS mais c'est tricher avec la raison d'être du fichier pipe).

    Mais sinon il n'existe pas de commande pour créer un double fifo...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 41
    Par défaut
    Bon, merci pour ces infos, on va faire avec ça alors...

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

Discussions similaires

  1. [Studio .NET] Executable qui marche sur des PC différents
    Par black is beautiful dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 05/10/2005, 17h00
  2. Sum de deux champs sur deux tables différentes
    Par kluh dans le forum Oracle
    Réponses: 11
    Dernier message: 29/09/2005, 18h21
  3. Même liste sur 26 pages différentes
    Par krfa1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 18/03/2005, 11h32
  4. [CR7] état sur un disque différent du crystal web serv
    Par shadowR dans le forum SAP Crystal Reports
    Réponses: 10
    Dernier message: 23/12/2004, 15h44
  5. Somme de 3 COUNT() sur 3 tables différentes
    Par PyRoFlo dans le forum Langage SQL
    Réponses: 9
    Dernier message: 13/08/2004, 18h36

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