Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
683 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#]redirection d'entrées/sorties

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#]redirection d'entrées/sorties

n°1414843
Bleuarff
pouet
Posté le 27-07-2006 à 17:58:45  profilanswer
 

Alors voila le problème:
 
J'ai une appli .NET qui lance un process dont j'aimerais 1-récuperer les sorties dans mon appli  et 2-lui envoyer des entrées depuis mon appli.
Si le process fait des sorties sans demander d'entrée, pas de souci j'y arrive. S'il attend des entrées sans faire de sortie pas de problème non plus. Par contre, s'il mélange les 2, rien ne va plus. S'il fait une sortie puis attend une entrée, je n'arrive pas à capturer la sortie ni à envoyer une entrée.
Quelqu'un aurait une idée pour résoudre ça ?
 
Mon code de test:

Code :
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             System.Diagnostics.Process proc = new System.Diagnostics.Process();
  6.             proc.StartInfo.FileName = "perl.exe";
  7.             proc.StartInfo.Arguments = "test.pl";//"install Crypt-SSLeay/Crypt-SSLeay-0.51.ppd";
  8.             proc.StartInfo.UseShellExecute = false;
  9.             proc.StartInfo.RedirectStandardInput = true;
  10.             proc.StartInfo.RedirectStandardOutput = true;
  11.             proc.StartInfo.RedirectStandardError = true;
  12.             proc.Start();
  13.             System.IO.StreamWriter Writer = proc.StandardInput;
  14.                                    
  15.             String outputText;
  16.             String err;
  17.            
  18.             while (!proc.HasExited)
  19.             {
  20.                 outputText = proc.StandardOutput.ReadLine();
  21.                 err = proc.StandardError.ReadLine();
  22.                 //et pourtant rien ne s'affiche
  23.                 Console.WriteLine(outputText);
  24.                 Console.WriteLine(err);
  25.                 //et l'entrée n'arrive pas au process
  26.                 Writer.WriteLine("yes" );
  27.                 Writer.Flush();
  28.             }
  29.             Writer.Close();
  30.             proc.Close();
  31.             Console.ReadKey();
  32.         }
  33.     }


---------------
©2008 Bleuarff Corp.
mood
Publicité
Posté le 27-07-2006 à 17:58:45  profilanswer
 

n°1414937
Taz
bisounours-codeur
Posté le 27-07-2006 à 22:24:53  profilanswer
 

Il te faut multiplexer lecture sur stdout, lecture sur stderr et écriture sur stdin et sans blocage.

n°1414940
Bleuarff
pouet
Posté le 27-07-2006 à 22:42:50  profilanswer
 

Euh...jveux bien mais tu pourrais être un poil plus explicite stp ?


---------------
©2008 Bleuarff Corp.
n°1414943
Taz
bisounours-codeur
Posté le 27-07-2006 à 22:53:28  profilanswer
 

ben soit avec des trucs async, soit mais c'est moins bon, avec un thread par lecteur ou écrivain.

n°1414950
Taz
bisounours-codeur
Posté le 27-07-2006 à 23:05:27  profilanswer
 

System.IO.Stream.BeginRead et ses copains.

n°1414956
Bleuarff
pouet
Posté le 27-07-2006 à 23:12:47  profilanswer
 

J'avais essayé pour un autre truc et j'en ai pas des bons souvenirs. Il faut obligatoirement passer par des gestionnaires d'evenements nan ?


---------------
©2008 Bleuarff Corp.
n°1414964
Taz
bisounours-codeur
Posté le 27-07-2006 à 23:28:26  profilanswer
 

ben c'est la meilleur solution car infaillible.

n°1415054
Bleuarff
pouet
Posté le 28-07-2006 à 10:28:57  profilanswer
 

J'ai justement pas l'impression que ce soit infaillible, il arrive lorsqu'un bete process qui ne fait que des sorties standards qu'elles ne soient pas toutes capturées.


---------------
©2008 Bleuarff Corp.
n°1415628
Taz
bisounours-codeur
Posté le 28-07-2006 à 23:12:46  profilanswer
 

mais bien sur, c'est bien connu, quand je fais  'echo pouet | wc' wc se chie dessus et me renvoit 0, 1 ou 3, ça dépend des fois ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#]redirection d'entrées/sorties

 

Sujets relatifs
[Résolu] Redirection si url utilisé ne convient pasRedirection après un "enregistrer sous..." en PHP ?
Redirection d'urlRecupérer une URL a partir d'une autre qui y pointe par redirection?
Commande d'instrument, redirection vers fichierredirection après envoi de données
insérer plusieurs entrées dans 2 tables avec LAST_INSERT_IDGarder les variables POST après une redirection header
pb de redirectionphp redirection selon un critaire
Plus de sujets relatifs à : [C#]redirection d'entrées/sorties


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR