hello,
J'ai une appli qui lance un process (un script Perl) dont j'aimerais capturer la sortie et rediriger l'entrée.
Le problème c'est que faire les 2 je n'y arrive pas. Si le script ne demande pas d'entrée, l'output est bien redirigé. S'il n'y pas d'output l'entrée est bien redirigée et je peux la controler depuis mon appli .NET. Mais si le process écrit sur l'output puis attend une entrée, alors rien ne se passe, le flux d'output n'est pas redirigé. Et ça m'emmerde bien puisque ce que je veux lui passer en entrée dépend de la sortie.
Quelqu'un sait-il comment faire, svp ?
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 class Program { static void Main(string[] args) {//configurer le process et le lancer System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "perl.exe"; proc.StartInfo.Arguments = "test.pl";//"install Crypt-SSLeay/Crypt-SSLeay-0.51.ppd"; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardInput = true; proc.StartInfo.RedirectStandardOutput = true; proc.Start(); System.IO.StreamWriter Writer = proc.StandardInput; String outputText; while (!proc.HasExited) { //input si la ligne de sortie finit par '?' outputText = proc.StandardOutput.ReadLine(); Console.WriteLine(outputText); if (outputText[outputText.Length - 1] == '?') { Writer.WriteLine("yes.txt"); Writer.Flush(); } } Writer.Close(); proc.Close(); Console.ReadKey(); } }
Partager