【问题标题】:Executing external program in java and passing commands在java中执行外部程序并传递命令
【发布时间】:2012-04-15 01:30:16
【问题描述】:

我有这个国际象棋引擎 Rybka.exe,我必须在 java 中执行 这是一个如何运行 Rybka 的示例: 单击它后,控制台将打开并等待输入。 然后你输入“uci”,然后按回车键,等待它加载(大约 1 秒),然后你必须再输入几行作为选项和东西。 问题是我不知道如何将这些命令从 java 传递给 Rybka。事实上,这些命令需要一次输入一个,因为您必须等待一些命令执行。 这就是我尝试打开它的方式。 代码:

Process p1 = Runtime.getRuntime().exec("Rybka.exe");

这可行,因为您可以看到 Rybka.exe 在任务管理器中处于活动状态,但我不知道如何将命令传递给它。

【问题讨论】:

标签: java process command runtime external


【解决方案1】:

【讨论】:

  • 注意:rybka(与所有 UCI/WinBoard 引擎一样)确实将 parameters(用于在运行时设置引擎的状态)与 commands(传递给正在运行的引擎);请参阅 en.wikipedia.org/wiki/Universal_Chess_Interfacewbec-ridderkerk.nl/html/UCIProtocol.html(谷歌搜索约 5 秒的结果)
  • 我不敢相信我是如此盲目。谢谢你让我再次看到它并得到它。我使用输入来打印控制台的输出,但我从来没有想过要反过来。
【解决方案2】:

您是否尝试过如下传递参数/命令?

Runtime.getRuntime().exec("Rybka.exe parameter1,parameter2");

【讨论】:

  • 我做到了,但首先它执行得很快,可能是因为它只执行 Rybka.exe,其次它没有提供任何输出。我知道我创建了输出 ok,因为如果我执行其他不需要参数的东西就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 2011-01-16
  • 2015-06-15
相关资源
最近更新 更多