C# - 关闭子进程的输入流

时间:2013-10-09 23:43:48

标签: c# .net windows process inputstream

我的C#程序需要通过标准输入将数据发送到第三方程序。但是,程序在处理之前等待输入流达到EOF。这是我的代码:

// Starts the process.
var process = new Process();
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.FileName = "foo.exe";
process.Start();

// Sends data to child process.
var input = process.StandardInput;
input.WriteLine("eval('2 * PI')");
input.Flush();
input.Close();

// Reads the result.
var output = process.StandardOutput;
var result = output.ReadLine();

子程序不会执行任何操作,我的C#代码会在output.ReadLine()调用时停滞不前。但是,如果我终止了C#进程,那么孩子就会开始完全依赖我发送的数据。在我还活着的时候,如何让孩子遇到EOF?

1 个答案:

答案 0 :(得分:2)

StreamWriter在关闭流时可能不会发送实际的eof。您可以尝试在关闭之前将自己编写到流中。这样的事情可能有用:

input.Write((char)26);

您可能必须找出该过程对eof的期望。