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

标签 java android shell

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

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

例如

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 循环并且不会记录任何内容。

请提出建议。

谢谢

最佳答案

处理完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

关于java - 如何打印没有任何输出的 shell 命令的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26946633/

相关文章:

java - 尝试用 Java 制作骰子滚动动画

c++ - 将 C++ 与 Android ndk/jni 一起使用

python - 在 Windows 上的 Emacs 中运行 Python

linux - 将程序生成的多个输出传递/管道传输到 bash 中的其他后续程序

java - 将组件添加到 jPanel java

java - 数组列表空指针异常 - Android

java - 在 ubuntu 14.04.1 上将 SpringBoot jar 部署为服务后出现语法错误

android - Eclipse - Android 不自动生成 R 类

android - 在 Android 中访问 JSON 数组的第零个索引

vim - 如何在 Vim 窗口中打开 Shell?