gpt4 book ai didi

java - 使用Java在命令行中执行多个命令

转载 作者:行者123 更新时间:2023-11-30 07:58:58 26 4
gpt4 key购买 nike

我正在用 Java 开发一个国际象棋程序。为了计算最佳走法(当一个人与计算机对弈时),我使用 UCI(通用国际象棋界面)。这是一个终端应用程序(我使用的是 Mac OS X)。使用 Java,我想执行一些命令以获得最佳 Action 。这就是我目前所拥有的:

String[] commands = {"/Users/dejoridavid/Desktop/stockfish-6-64", "isready", "uci"};
Process process = null;
try {
process = Runtime.getRuntime().exec(commands);
} catch (IOException e) {
e.printStackTrace();
}

BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));

// read the output from the command
String s;
try {
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();
}

数组中的第一个命令调用终端应用程序。第二个和第三个都是应用内命令。现在我有一个问题。仅执行前两个命令,其结果打印在控制台中,第三个命令被忽略。我做错什么了吗?请告诉我如何执行第三个(或更多、第四、第五等)命令。

最佳答案

您不能使用Runtime.getRuntime().exec()在另一个程序内执行命令。传递给 exec 方法的数组将数组的第一个元素作为命令,其他元素作为命令的参数。

来自公共(public)Process exec(String[] cmdarray)的javadoc抛出IOException

Parameters: cmdarray - array containing the command to call and its arguments.

您必须通过调用 Runtime.getRuntime().exec() 来执行主命令

然后,您必须使用调用 Runtime.getRuntime().exec() 返回的 Process 的输入流/输出流来写入/读取命令/答案

要检索进程的输入流和输出流,请使用进程对象上的 getInputStream()getOutputStream() 方法

关于java - 使用Java在命令行中执行多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32225603/

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