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 :

Tube nommé: un casse tête


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de yashiro
    Inscrit en
    Mars 2004
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 214
    Par défaut Tube nommé: un casse tête
    Bonjour!
    je voudrais faire communiquer 2 processus sous Linux sur la même machine le premier crée 1 pipe nommé et envoi un texte dedans comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mkpipe("pipe", S_IWUSR);
    descr = open("pipe",O_WRONLY);
    write(descr,"0123456789",10);
    close(descr);
    puis le 2e processus récupère le message et l'affiche à l'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char chn[11];
    descr2 = open("pipe", O_RDONLY);
    read(descr2, chn, 10);
    printf("%s",chn);
    close(descr2);
    Mais à ma grande surprise, ce code compile mais lorsque je lance le 1e code il se bloque et le 2e ne se connecte pas sur le pipe, de même si je lance d'abord le 2e
    Je ne sais pas comment les faire communiquer correctement

  2. #2
    Membre chevronné Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Par défaut
    Salut,

    Je n'ai jamais vu la fonction mkpipe, par contre mkfifo fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mkfifo("pipe", 0666);
    descr = open("pipe",O_WRONLY);
    write(descr,"0123456789",10);
    close(descr);

  3. #3
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Si tu testais les codes retour de tes appels système, peut être que tu aurais des infos sur ton problème...
    Ceci dit, je confirme ce que dit Tchetch, utilise mkfifo (ou mknod), et fais attention aux droit d'accès à ton pipe...

Discussions similaires

  1. Précision sur les tubes nommés
    Par timeout dans le forum Windows
    Réponses: 3
    Dernier message: 08/12/2009, 08h50
  2. probleme lecture et ecriture dans les tube nommés
    Par El-Patron dans le forum POSIX
    Réponses: 0
    Dernier message: 28/11/2009, 10h58
  3. Ecriture dans un tube nommé
    Par prgasp77 dans le forum Administration système
    Réponses: 7
    Dernier message: 17/11/2009, 14h01
  4. Tubes nommés (named pipes) asynchrones
    Par piziwate dans le forum C
    Réponses: 8
    Dernier message: 18/12/2007, 19h41
  5. tube nommé en C
    Par yann999 dans le forum POSIX
    Réponses: 7
    Dernier message: 24/11/2006, 11h10

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