【发布时间】:2013-09-03 19:49:43
【问题描述】:
我在使用 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 获得相同的结果?
【问题讨论】:
-
阅读(并实施)所有 When Runtime.exec() won't 的建议。那可能会解决问题。如果没有,它应该提供更多关于失败原因的信息。然后忽略它引用
exec并使用ProcessBuilder构建Process。还要将String arg分解为String[] args以说明本身包含空格的参数。
标签: java linux shell process runtime.exec