r.exec でいくつかの単純なコマンド ライン関数を呼び出す際に問題が発生しています。何らかの理由で、ファイル X を指定すると、コマンド 'echo full/path/to/X' が正常に動作します (ディスプレイと 'p.exitValue の両方で) ()==0'、しかし 'cat full/path/to/X' はそうではありません (そして 'p.exitValue()==1' を持っています) - 'cat' と 'echo' の両方が私の /bin/ に住んでいますOSX - 何か不足していますか? コードは以下にあります (たまたま、コードを改善するための提案は大歓迎です...)
private String takeCommand(Runtime r, String command) throws IOException {
String returnValue;
System.out.println("We are given the command" + command);
Process p = r.exec(command.split(" "));
InputStream in = p.getInputStream();
BufferedInputStream buf = new BufferedInputStream(in);
InputStreamReader inread = new InputStreamReader(buf);
BufferedReader bufferedreader = new BufferedReader(inread);
// Read the ls output
String line;
returnValue = "";
while ((line = bufferedreader.readLine()) != null) {
System.out.println(line);
returnValue = returnValue + line;
}
try {// Check for failure
if (p.waitFor() != 0) {
System.out.println("XXXXexit value = " + p.exitValue());
}
} catch (InterruptedException e) {
System.err.println(e);
} finally {
// Close the InputStream
bufferedreader.close();
inread.close();
buf.close();
in.close();
}
try {// should slow this down a little
p.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
return returnValue;
}