2

我的 C# 程序需要通过其标准输入将数据发送到第 3 方程序。但是,程序在处理之前等待输入流到达 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?

4

1 回答 1

2

StreamWriter 在关闭流时可能不会发送实际的 eof。您可以在关闭之前尝试将自己的内容写入流。像这样的东西可能会起作用:

input.Write((char)26);

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

于 2013-10-10T01:27:55.617 回答