从另一个程序控制台读取输入。 Java的

时间:2011-07-13 17:39:37

标签: java

所以这就是我想要做的。我目前管理TF2(源引擎游戏)服务器,2个控制台同时运行服务器,一个用于游戏,另一个用于编译统计数据,两者都在他们的控制台上有足够的冗长,所以我认为“为什么不创建一个过滤控制台文本的程序,只留下重要的东西“,并且可能还添加了一种向两个控制台发送命令的方法。

3 个答案:

答案 0 :(得分:0)

让控制台将其输出重定向到文件:

Windows:http://blog.crankybit.com/redirecting-output-to-a-file-in-windows-batch-scripts/

* nix:http://linux.byexamples.com/archives/349/how-to-redirect-output-to-a-file-as-well-as-display-it-out/

现在您的Java程序可以读取文件并解析输出。您甚至可以使用Apache Commons中的Tailer在文件更新时执行某些操作。

答案 1 :(得分:0)

您可能希望查看ProcessBuilder以从其他java程序中启动该过程。然后,您可以通过Process.getInputStream()附加到流程的输出流。

答案 2 :(得分:0)

命名管道可能是您最好的选择。它们的功能类似于命令行管道。不同之处在于,有一个文件名可以让您在差异控制台上连接两个单独的命令。例如,在* nix / MacOSX系统上,您可以像这样执行命名管道:

$ mkfifo my_pipe
$ echo "information" > my_pipe

在单独的控制台上

$ cat my_pipe

这相当于:

$ echo "information" | cat

除了您可以使用单独的控制台进行操作。

您可以让控制台将信息发送到命名管道,然后使用管道作为输入运行Java代码。像这样。

$ console > my_pipe

在另一个终端上:

$ java my_java_code < my_pipe

这也可以在Windows上完成,但我不确定命令的具体语法。此链接可能有所帮助:

Named Pipes in Windows