2

我有使用问题Runtime.getRuntime().exec

String line = "";
String output = "";
Process p = Runtime.getRuntime().exec(new String[]{"dmidecode | grep UUID:"});
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
    output += (line + '\n').trim();
}

input.close();

我对此进行了测试并且无法正常工作

String line = "";
String output = "";
Process p = Runtime.getRuntime().exec("dmidecode | grep UUID");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
    output += (line + '\n').trim();
}
input.close();

我在 linux 机器上得到下一个错误:

java.io.IOException: Cannot run program "dmidecode | grep UUID:": error no such file or directory

但是我在控制台中测试了命令,我得到了结果!

dmidecode | grep UUID:=> UUID: 564DAF5F-FBF7-5FEE-6BA4-67F0B12D8E0E

如何使用基于 Java 的方法获得相同的结果Process

4

1 回答 1

2

管道运算符|无法工作,因为这是命令外壳的一部分。尝试使用 shell 来执行命令。您也可能想使用ProcessBuilder它的方便

ProcessBuilder builder = 
      new ProcessBuilder("bash", "-c", "dmidecode | grep UID:");
builder.redirectErrorStream(true);
Process p = builder.start();
于 2013-08-31T02:16:41.337 回答