如何为一个进程设置输入和捕获输出?

时间:2015-06-14 16:15:42

标签: c# .net process

我正在编写一个小型控制台应用程序,用于与国际象棋引擎通信。我正确设置了进程类,我可以设置输入,但是我无法捕获输出。使用此起始参数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");

1 个答案:

答案 0 :(得分:0)

我刚才在你上一期的问题中回答了这个问题。只需在process.StandardInput.WriteLine("stop");

之后添加这些行
string lastLine = null;
while (!process.StandardOutput.EndOfStream) 
{
    lastLine = process.StandardOutput.ReadLine();
}

//do what you want here with lastLine;