如何打印没有任何输出的shell命令的结果

时间:2014-11-15 14:03:07

标签: java android shell

我通过exec命令在我的android应用程序中运行了一些shell命令。

我想检查上一个命令的结果,例如是否发生了任何错误或命令已成功执行。

e.g。

Process p = Runtime.getRuntime().exec("chmod 755 " + myFile.getAbsolutePath() + "/fileName");

现在chmod不会打印任何结果,所以如何检查权限是否已被修改。

如果我尝试打印process对象的输出,例如:

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

String line = "";
StringBuffer output = new StringBuffer();
while ((line = reader.readLine()) != null) {
    output.append(line + "\n");
}

Log.e("output: ", output.toString());

然后调试器永远不会进入while循环&没有记录。

请建议。

谢谢

1 个答案:

答案 0 :(得分:1)

处理outputStream后,等待进程退出状态并与0(成功)进行比较。

int retVal = p.waitFor();
if (retVal != 0){
   Log.e("Error", "process returned exit status: "+retVal);
}

http://developer.android.com/reference/java/lang/Process.html#waitFor%28%29