2013-06-14 4 views
1

Я пытаюсь перенаправить стандартный вывод из процесса, но я хочу перенаправить строку за строкой, так как другие результаты процесса выходят, а не все одновременно. Сейчас мой код выглядит следующим образом:Как перенаправить стандартный вывод, исходящий от Stream

proc->StartInfo->FileName = "ping.exe"; 
proc->StartInfo->UseShellExecute = false; 
proc->StartInfo->RedirectStandardOutput = true; 
proc->StartInfo->Arguments = "-n 1 www.google.com"; 
proc->Start(); 

StreamReader^ stream = proc->StandardOutput; 


if(stream){ 
    //String^ s = stream->ReadToEnd(); 
    //Console::WriteLine(s); 
    proc->WaitForExit(); 
    while(stream->Peek() >= 0) 
    { 
     Console::WriteLine(stream->ReadLine()); 
    } 

} 

Но что он должен сделать, это ждать, пока процесс, чтобы выйти перед печатью всех выходных данных Ping. Если вы запускаете ping изначально, вы можете видеть, что вывод поступает периодически по запросу HTTP-запросов. В основном я хочу, чтобы вывод был поставлен в очередь и перенаправлен таким же образом, как показано на рисунке.

ответ

0

Понял:

String^ s; 
     //Console::WriteLine(s); 
     //proc->WaitForExit(); 
     while(s=stream->ReadLine()) 
     { 
      Console::WriteLine(s); 
     } 

Это работает

Смежные вопросы