我有一些启动java进程的c#代码。在运行Windows 7的一台机器上,它工作正常。在另一个正在运行的XP上它不会。下面是代码...启动过程中重定向标准错误和标准输入的问题
mServerProcess = new Process();
mServerProcess.StartInfo.FileName = "java";
mServerProcess.StartInfo.Arguments = "-jar my.jar";
mServerProcess.StartInfo.WorkingDirectory = "C:\\my_server";
mServerProcess.StartInfo.UseShellExecute = false;
mServerProcess.StartInfo.CreateNoWindow = true;
mServerProcess.StartInfo.RedirectStandardOutput = true;
mServerProcess.StartInfo.RedirectStandardError = true;
mServerProcess.StartInfo.RedirectStandardInput = true;
mServerProcess.OutputDataReceived += new DataReceivedEventHandler(ServerOutputHandler);
mServerProcess.ErrorDataReceived += new DataReceivedEventHandler(ServerErrorHandler);
mServerProcess.SynchronizingObject = this.console;
// Start the process.
mServerProcess.Start();
// Start the asynchronous read of the sort output stream.
mServerProcess.BeginOutputReadLine();
mServerProcess.BeginErrorReadLine();
在XP的机器我从来没有从进程的标准错误来的文字,和一般的进程似乎打破。我无法从标准输入流中发送任何内容。
现在......有趣的是,如果我将重定向标准输入的代码注释掉,我会得到标准错误。但是,当然,我也需要重定向标准输入。
有没有人见过这个?...重定向标准输入和标准错误导致问题?
再次...我没有这个问题在我的Windows 7框。
感谢, 巴兹
UPDATE:
我使用了Java Logger类输出信息从我的Java应用程序。我认为这个问题与Java特别有关,它的ConsoleHandler类如何处理标准错误。这让我疯狂!
+1 - 烨 - *“如果我注释掉重定向标准输入的代码......” *是一条走不通的赠品:-) – 2011-05-10 01:33:36
试过了。依然没有。 – BuzzB 2011-05-12 04:06:52