0

所以本质上,我正在尝试运行命令“/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 文件夹。

4

1 回答 1

0

I wasn't running the error stream, so I've added that.

After that I realized I was missing an environment variable, so added:

String[] envar = {"VAR=path"}

and called:

runtime.exec(lookupCmd, envar);

Works great now.

于 2012-08-15T15:28:36.307 回答