Как распечатать значение, которое печатает подпроцесс с помощью C #? - PullRequest
0 голосов
/ 12 февраля 2011

Как указано в этом посте , я могу использовать функцию Python subprocess.Popen () для вывода значения из кода ruby.

import subprocess
import sys

cmd = ["ruby", "/Users/smcho/Desktop/testit.rb"]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, ''):
    print line, 
    sys.stdout.flush() 
p.wait()

Как я могу сделать то же самое с C #? Как можно распечатать значение, которое печатает подпроцесс?

Ответы [ 2 ]

6 голосов
/ 12 февраля 2011

Вам нужно перенаправить стандартный вывод при порождении дочернего процесса;MSDN имеет полный пример: http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput.aspx

(из MSDN):

 // Start the child process.
 Process p = new Process();
 // Redirect the output stream of the child process.
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.FileName = "Write500Lines.exe";
 p.Start();
 // Do not wait for the child process to exit before
 // reading to the end of its redirected stream.
 // p.WaitForExit();
 // Read the output stream first and then wait.
 string output = p.StandardOutput.ReadToEnd();
 p.WaitForExit();
2 голосов
/ 12 февраля 2011
ProcessStartInfo psi = new ProcessStartInfo("ruby", "/Users/smcho/Desktop/testit.rb");
psi.RedirectStandardOuput = true;W    
Process proc = new Process(psi);
proc.Start();
StreamReader stdout = proc.StandardOutput;
string line;
while ((line = stdout.ReadLine()) != null)
   Console.WriteLine(line);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...