gpt4 book ai didi

c# - 如何逐行读取标准输出?

转载 作者:太空狗 更新时间:2023-10-29 18:14:56 24 4
gpt4 key购买 nike

我想逐行检查流程的标准输出。阅读第二行后,myProcess.StandardOutput.EndofStream 从 false 变为 true。因此它退出 while 循环。也许我应该使用其他东西?

Process myProcess = new Process();
try
{
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = my_command;
myProcess.StartInfo.Arguments = " "+ location;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.Start();

while (!myProcess.StandardOutput.EndOfStream)
{
string standard_output = myProcess.StandardOutput.ReadLine();
if (standard_output.Contains("xx"))
{
//do something

break;
}
}

myProcess.WaitForExit();
}

最佳答案

从 StandardOutput 中读取与从具有明确端点的文件中读取不同。挂接到 StandardOutput 的 StreamReader 可以在进程退出之前到达 EndOfStream(意味着已读取所有可用输出)。

然而,ReadLine 将等待数据可用或流关闭。当流关闭时,ReadLine 将返回 null。

重写主循环以使用 ReadLine 的阻塞 I/O 作为等待条件:

    string standard_output;
while ((standard_output = myProcess.StandardOutput.ReadLine()) != null)
{
if (standard_output.Contains("xx"))
{
//do something
break;
}
}

关于c# - 如何逐行读取标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com