Joh*_*ann 8 c# process redirectstandardoutput
我想逐步检查流程的标准输出.在读取第二行后,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();
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*tak 16
从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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14450 次 |
| 最近记录: |