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++Builder Discussion :

Lecture standard et communication entre processus!


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Lecture standard et communication entre processus!
    Bonjour a tous,

    Je voudrais savoir si c'est possible de crée 2 applications: une qui lit uun flux de données sur l'entree standard et une autre qui récupere ce qui a été écrits dans la premiere appli et qui le traite???

    J'imagine qu'il faut utiliser le multithread mais je ne sais pas comment l'utiliser pouvez vous me donner un coup de main!!!

  2. #2
    Membre régulier
    Profil pro
    Architecte logiciel
    Inscrit en
    Octobre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Architecte logiciel

    Informations forums :
    Inscription : Octobre 2002
    Messages : 64
    Points : 88
    Points
    88
    Par défaut
    salut,
    pour la communication entre les 2 applications , tu peux utiliser les sockets tu as des objets qui le font tres bien dans la palette internet de
    l'EDI de BCB.
    A+.
    THE KING

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Communication entre processus
    J'ai déja fait ce genre de programme mais dans le cadre du syteme Unix avec utilisation de pipe() et de fork() et des signaux systeme mais je ne sais pas si les sockets sont une bonne solution.

    En fait il faudrais que un programme lise sur l'entree standard et des qu'il ya un flux écris dans le canal de communication des 2 processus et provoque un signal pour indiquer au processus de lire ce flux sur le canal de communication.

    Ya t'il un autre moyen que d'utiliser les sockets?? car les sockets sont plus utilisé sur le reseaux qu entre processus!

    Merci pour vos reponses.

    Tartar

  4. #4
    Membre averti
    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
    Points : 338
    Points
    338
    Par défaut
    Tu peux faire la même chose sous Windows que sous Unix:
    fork() ---> CreateProcess()
    pipe() ---> CreatePipe()
    Apres le fonctionnement est le même

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    pas mal ça.

    Je vais essayer de faire des recherches dans l'aide mais un pti exemple d'utilisation me ferais plaisir.

    a+ et merçi

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2003
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Tu peux aussi utiliser les fonctions de memoire partagé.

    Tu crees d'abord ta structure de données que tu veux mettre dans la memoire partagée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct
    {
            int truc;
            char machin[255];
    }SData;
    Une petite fonction pour creer ou ouvrir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    HANDLE ObtainMappingHandle(char *Name)
    {
            HANDLE hdl = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, sizeof(SData), Name);
            if (hdl != 0)
            {
                    if (GetLastError() == ERROR_ALREADY_EXISTS)
                    {
                            CloseHandle(hdl);
                            hdl = OpenFileMapping(FILE_MAP_WRITE, false, Name);
                    }
            }
            return hdl;
    }
    Dans ton 1er processus qui ecrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SData *data;
    HANDLE hMap = ObtainMappingHandle("TonMapFile");
     
    data = (SData *)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0);
     
    // et ensuite tu peux ecrire dedans :
    data->truc = 45;
    strcpy(data->machin, "Ca marche !");
     
    UnmapViewOfFile(data);
    Dans ton 2e processus qui lit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SData *data;
    int i;
    char test[255];
    HANDLE hMap = ObtainMappingHandle("TonMapFile");
     
    data = (SData *)MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0);
     
    // et ensuite tu peux lire dedans :
    i = data->truc;
    strcpy(test, data->machin);
     
    UnmapViewOfFile(data);

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

Discussions similaires

  1. Communication entre processus
    Par annemarie dans le forum Windows
    Réponses: 3
    Dernier message: 11/05/2009, 15h47
  2. [C#]Communication entre processus
    Par ShamSS dans le forum C#
    Réponses: 5
    Dernier message: 28/02/2009, 19h39
  3. communication entre processus
    Par gerard tarquin dans le forum Général Python
    Réponses: 12
    Dernier message: 13/06/2007, 12h29
  4. [VB.Net][Threading] Communication entre processus
    Par DonF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/02/2006, 15h15
  5. Communication entre processus
    Par markopolo dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/06/2003, 16h21

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