c# - 启动进程时重定向标准错误和标准输入时出现问题

标签 c# java .net process io

我有一些启动 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/

相关文章:

c# - 如何从 C# 中的 PowerShell 命令获取 Invoke-Command 详细或调试输出

C#:使用 new 创建一个对象但不分配它。好主意/坏主意?

java - 将更多现有源添加到 Java 项目

java - 如何在命令提示符下运行 Java 程序

c# - 在 C# 中创建 TCP 数据包

.net - 如何使用reflector查看.NET库函数的实现

c# - Multi-Tenancy ASP .NET 应用程序中的隔离

c# - 如何在安装结束时运行 nGen (MSI)?

c# - LINQ 到实体 : cannot call a method

java - 如何在不使用 `ScheduledThreadPoolExecutor` 的情况下使用单线程创建 `Executors.newSingleThreadScheduledExecutor` ?