我有一些启动 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 机器上没有这个问题。
谢谢, 嗡嗡声
更新:
我正在使用 java Logger 类从我的 java 应用程序输出信息。我认为这个问题具体与Java及其ConsoleHandler类如何处理标准错误有关。这让我发疯!
最佳答案
该进程可能正在等待一些输入。
尝试给它一些输入。
关于c# - 启动进程时重定向标准错误和标准输入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5944165/