我有一些啓動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