如何重定向标准输出,因为它来自Stream

时间:2013-06-14 20:18:39

标签: c++ c++-cli

我正在尝试重新引导Process的标准输出,但我希望逐行重新引导,因为其他进程输出而不是一次性完成。现在我的代码看起来像这样:

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请求时,输出会定期发生。我基本上希望输出排队并逐行重新定向。

1 个答案:

答案 0 :(得分:0)

知道了:

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

这有效