gpt4 book ai didi

java - 包装 java 程序的标准输入/标准输出

转载 作者:行者123 更新时间:2023-11-29 08:46:33 25 4
gpt4 key购买 nike

我正在为流行游戏 minecraft 编写一个服务器管理工​​具。

此游戏及其服务器应用程序是用 java 编写的。服务器只是一个从终端启动的 jar,它接受来自 stdin 的输入作为命令并输出到 stdout。 (java -jar server.jar 中的一些内容)

现在我要做的是围绕这些 java 进程创建某种包装器(python 中的 atm,我也可以使用 java)并创建一个 API 来管理它们(发送命令、重新启动、检查进程是否仍在运行,...)。我需要这个 API,这样我就可以为整个事情创建一个 Web 前端。一台物理服务器将运行这些 java 进程的多个实例(多个游戏服务器),所以我不想在这里有太多开销。

我试过使用 python 的子进程,但是这会阻塞直到程序完成然后输出标准输出内容,但我需要它返回实时。我还遇到了 Pexpect ( http://pexpect.readthedocs.org/en/latest/),但它似乎更像是一个自动化测试工具包。

最佳答案

使用

Runtime.getRuntime().exec("your sever start command or script")

获取 Process 的实例。

在实例中,您可以使用

接收服务器的标准输出
InputStreamReader(process.getInputStream()), 

并使用

将字节发送到它的标准输入
process.getOutputStream().write("your commannd\n".getBytes()); 

记得刷新ostream来执行命令!

关于java - 包装 java 程序的标准输入/标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25042849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com