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 :

Code Win32 vers Linux (stdin/stdout)


Sujet :

Linux

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2003
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 222
    Points : 91
    Points
    91
    Par défaut Code Win32 vers Linux (stdin/stdout)
    Bonjour,
    je dispose d'un programme sous windows qui me permet de lancer un autre executable et qui me permet de le piloter via le stdin/stdout et stderr.
    En effet je dispose de pipes pour chaque flux et ainsi pour le controle est réalisé via des lectures et des écritures dans ces tubes nommés.
    (Je recupere son affichage via le processus "mère")

    J'aimerai faire la même chose sous Linux.
    Est ce possible ?
    Comment s'y prendre ?

    Merci d'avance.

    Je laisse pour les non-allergiques de code purement API-Windows un peu d'exemples de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    SECURITY_ATTRIBUTES sa = {
       sizeof(SECURITY_ATTRIBUTES), 
        0, true
      };
      HANDLE hProc = GetCurrentProcess();
     
      CreatePipe(&hOutputReadTmp, &hOutputWrite, &sa, 0);
     
      CreatePipe(&hInputRead, &hInputWriteTmp, &sa, 0);
     
      CreatePipe(&hErrorReadTmp, &hErrorWrite, &sa, 0);
     
      DuplicateHandle(hProc, hErrorReadTmp, hProc, 
       &hErrorRead, 0, false, DUPLICATE_SAME_ACCESS);
     
      DuplicateHandle(hProc, hOutputReadTmp, hProc, 
       &hOutputRead, 0, false, DUPLICATE_SAME_ACCESS);
     
      DuplicateHandle(hProc, hInputWriteTmp, hProc, 
       &hInputWrite, 0, false, DUPLICATE_SAME_ACCESS);
     
    ...
     
     STARTUPINFO suinfo = {
      sizeof(STARTUPINFO), // cb
       0, 0,     // reserved
       0,      // lpTitle
       0, 0,     // dwX, dwY
       0, 0,     // dwXSize, dwYSize
       0, 0,     // dwXCountChars, dwYCountChars
       0,      // dwFillAttribute
       STARTF_USESTDHANDLES |
       STARTF_USESHOWWINDOW, // dwFlags
       l_wShowWindow,      // wShowWindow
       0, 0,     // reserved
       hInputRead,    // hStdInput;
       hOutputWrite,   // hStdOutput;
       hErrorWrite,   // hStdError;
     };
     
    ...
     
     successfulrun = CreateProcess(
      0,
      const_cast<char*>(params),
      &sa,0,
      true, 
      0,
      0,
      0,
      &suinfo,
      &pinfo) != false;
     
    ...
     
    ReadFile(hOutputRead, &c, 1, &ic, 0) //lecture
    ...
     
     WriteFile(hInputWrite, buf, strlen(buf), &ic, 0); //ecriture
     
    ...
    Merci.

  2. #2
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    Oui c'est possible. Le processus est basiquement le même que sous windows, avec des fonctions moins verbeuses. Un doc qui a l'air bien http://micmacfr.homeunix.org/progsys...05.shtml.shtml

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2003
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 222
    Points : 91
    Points
    91
    Par défaut
    Parfait !!!
    Merci c'est pile ce que je cherchais... (J'ai trouvé un exemple aussi mais beaucoup moins parlant que ton lien )
    Merci !

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

Discussions similaires

  1. <time.h> code fonctionnant sous WIN32 et Linux
    Par sixkiller dans le forum C++
    Réponses: 2
    Dernier message: 15/11/2006, 17h09
  2. Réponses: 1
    Dernier message: 01/02/2005, 12h56
  3. Adaptation d'un code TMemo vers TRichEdit : problème de ScrollBars
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/01/2005, 15h06
  4. [JavaComm]Pb avec l'execution d'un code natif sous linux
    Par seb31 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 02/06/2004, 14h25
  5. descripteur stdin stdout
    Par discogarden dans le forum Réseau
    Réponses: 10
    Dernier message: 08/01/2003, 23h25

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