我正在编写一个小型控制台应用程序,用于与国际象棋引擎通信。我正确设置了进程类,我可以设置输入,但是我无法捕获输出。使用此起始参数startInfo.RedirectStandardInput = true; startInfo.RedirectStandardOutput = false;
可以输入。当我设置startInfo.RedirectStandardOutput = true;
时,只有空控制台窗口启动,无法输入。我看到了这个主题Catch console input-output并且它被标记为已被接受,但它对我不起作用。
现在我的程序(我在这里如何阅读最后一行输出):
var position = File.ReadAllText("C:\\pos.txt");
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = false;
startInfo.UseShellExecute = false;
startInfo.ErrorDialog = false;
startInfo.FileName = "C:\\engine.exe";
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
process.StandardInput.WriteLine("position startpos moves " + position);
process.StandardInput.WriteLine("go");
System.Threading.Thread.Sleep(500);
process.StandardInput.WriteLine("stop");
答案 0 :(得分:0)
我刚才在你上一期的问题中回答了这个问题。只需在process.StandardInput.WriteLine("stop");
string lastLine = null;
while (!process.StandardOutput.EndOfStream)
{
lastLine = process.StandardOutput.ReadLine();
}
//do what you want here with lastLine;