所以本质上,我正在尝试运行命令“/dir/command -arg”来更改 Java 中 USB 设备上的 LED 颜色。我正在使用 Ubuntu 10.04。当我从终端运行命令时,它工作得很好。
但是,我尝试了我能找到的 Runtime.exec() 的每一次迭代,但它们似乎都不起作用。然后我创建了一个包含以下内容的脚本:
#!/bin/bash
echo "hello"
/dir/command -arg
当我从终端运行它时,它工作得很好。但是,当我跑步时
@Override
public void run() {
String[] lookupCmd = {"/bin/sh","-c", "sh /dir/script.sh"};
try {
Runtime runtime = Runtime.getRuntime();
Process lookupProc = runtime.exec(lookupCmd);
lookupProc.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(lookupProc.getInputStream()));
String line = reader.readLine();
while (line != null) {
id.add(line);
System.out.println(line);
line = reader.readLine();
}
} catch (Exception e) {
System.err.println(e);
}
}
“你好”打印,但没有别的。没有错误。
我的其他命令不应该产生任何输出,而只是改变 LED 的颜色。但是,当我使用相同的命令但产生输出的不同 arg 运行它时,它仍然只打印“hello”。
我还确保我的用户有权使用 USB 设备访问 /dev 文件夹。