c#重定向标准输入/错误

本文关键字:错误 标准输入 重定向 | 更新日期: 2023-09-27 18:03:21

我的应用程序用于启动Java进程并对其进行管理(如果它崩溃则重新启动它,提供tcp服务器以发出远程命令,等等)。在我的RCON服务器(远程控制台)上,它工作得很好。但是,当我将命令发送给Java进程时,我希望接收回复(Java进程实际上以standderror而不是StandardOutput进行回复),并将该响应显示给远程连接的人员。

我的问题是,因为他们的输入是通过我的redirectedstanddinput函数发送的,我怎么能确保我从RedirectedStandardOutput得到正确的答复?

最好是有某种全局标志,表示"RCON命令已发送,通过标准错误接收的下一个消息应用于回复"?我想我主要担心的是,Java进程是一个游戏,使用这种方法,它可能会拾取诸如"玩家已加入游戏"之类的内容,而不是对命令的实际响应。对命令的响应在视觉上是即时的,但我不知道它是否有延迟,或者只是有一点延迟。

c#重定向标准输入/错误

这取决于Java应用程序的实现方式。但是如果我们对它一无所知,我们不得不假设它可以是多线程的。但这意味着在您发送命令和响应之间可能出现不是对您的命令的响应的消息。

如果是这种情况,你有几个解决方案:

  1. 如果您知道可能的消息,解析它们以找出它是响应还是不相关的消息。
  2. 如果你可以改变Java应用程序,改变它,使它使用一些更好的协议进行通信。