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

Autres éditeurs Discussion :

Transfert par pipe


Sujet :

Autres éditeurs

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Transfert par pipe
    Bonjour :
    je sais utiliser des pipes pour faire des transferts de messages sous forme de chaine de caracteres entre deux processus pere et fils ( avec des tubes sans nom )

    Mais voila : je voudrais faire des transfert d'une structure que j'ai defini.

    Est ce possible ?

    je voudrais faire un transfert de structure comme celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct
    {
            char* message;
            int entier;
    }nouveau;
    entre un processus fils et pere.

    voila, merci d'avance si vous avez une réponse

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Bienvenue sur développez !

    Je n'ai jamais essayé mais tu devrais pouvoir en passant par des pointeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int tube[2];
    pipe(tube);
    nouveau * data;
    p = fork();
    if(p){
       data->entier = 42;
       data->message = "pouet pouet"
       write(tube[0], data, sizeof(nouveau)); //ou tube[1] je ne sais plus
    } else {
       read(tube[1], data, sizeof(nouveau));
    }
    C'est ce que tu veux ? Ca marche ?
    Strab

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Oui ca marche !!
    Je te remercie ! Je n'aurais pas pensé à passer par les pointeurs ( je suis debutant en c )

    donc voila le code que j'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int tube[2],p;
    pipe(tube);
    nouveau * data;
    p = fork();
    if(p){
       close(tube[0]);   
       data->entier = 42;
       data->message = "pouet pouet";
       write(tube[1], data, sizeof(nouveau));
       printf("%s\n",data->message); //ou tube[1] je ne sais plus
    } else {
       close(tube[1]);    
       read(tube[0], data, sizeof(nouveau));
    }
    et je recoit bien le message !
    encore merci

  4. #4
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Cette astuce est intuitive quand on connait le fonctionnement de read et write : ils lisent et copient les bits à partir de l'adresse indiquée, octet par octet, sans se préoccuper de ce que c'est. Tu peux donc lire et écrire n'importe qu'elle type de données, aussi complexe soit-t-il, du moment que tu le lis de la même façon que tu l'écris.

    Et sinon, pense au bouton

    Sayônara !

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

Discussions similaires

  1. [VBA-W]Transfert par WebServices & Conver base64
    Par Stef784ever dans le forum VBA Word
    Réponses: 2
    Dernier message: 18/12/2007, 13h40
  2. Communication par pipe sous Windows.
    Par Pragmateek dans le forum Windows
    Réponses: 9
    Dernier message: 05/04/2006, 15h22
  3. Problème avec le transfert par POST
    Par raptor70 dans le forum Langage
    Réponses: 11
    Dernier message: 28/11/2005, 11h44
  4. Envoi d'un tableau par pipe
    Par Chicard dans le forum Développement
    Réponses: 2
    Dernier message: 10/03/2004, 09h47
  5. Transferts par web, quel SGBD ?
    Par Harry dans le forum Bases de données
    Réponses: 10
    Dernier message: 22/08/2003, 22h46

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