相关疑难解决方法(0)

可重复输入过程的标准输入

我有一个(C#)控制台应用程序,它维护一个状态.通过控制台向应用程序提供各种输入,可以更改状态.我需要能够通过一点输入来提供应用程序,然后读取输出冲洗并重复.

我创建了一个新进程,并完成了重定向输入/输出的所有正常工作.问题是,在我发送输入并调用ReadLine()标准输出之后,它在我调用Close()标准输入之前没有返回值,之后我不能再写入输入流了.

如何在仍然接收输出的同时保持打开输入流?

 var process = new Process
                          {
                              StartInfo =
                                  {
                                      FileName =
                                          @"blabal.exe",
                                      RedirectStandardInput = true,
                                      RedirectStandardError = true,
                                      RedirectStandardOutput = true,
                                      UseShellExecute = false,
                                      CreateNoWindow = true,
                                      ErrorDialog = false
                                  }
                          };


        process.EnableRaisingEvents = false;

        process.Start();

        var standardInput = process.StandardInput;
        standardInput.AutoFlush = true;
        var standardOutput = process.StandardOutput;
        var standardError = process.StandardError;

        standardInput.Write("ready");
        standardInput.Close(); // <-- output doesn't arrive before after this line
        var outputData = standardOutput.ReadLine();

        process.Close();
        process.Dispose();
Run Code Online (Sandbox Code Playgroud)

我正在重定向IO的控制台应用程序非常简单.它从控制台读取使用Console.Read()和写入它Console.Write().我确信这个数据是可读的,因为我有另一个应用程序,它使用标准输出/输入(不是用.NET编写)从中读取.

.net c# io-redirection

6
推荐指数
1
解决办法
7621
查看次数

标签 统计

.net ×1

c# ×1

io-redirection ×1