【发布时间】:2012-12-10 18:10:46
【问题描述】:
我创建了一个类来处理 android 应用程序中的根命令,它大部分工作得很好。我使用 Runtime.getRuntime().exec("su") 创建进程,然后使用 DataOutputStream 输入命令,并使用 DataInputStream 和已弃用的 readLine 从命令中获取数据。 (我已经尝试使用 BufferedReader 代替,但问题没有区别)。
我的问题是,如果命令产生错误,应用程序将挂起。 F.eks。如果我执行命令 "[ -f /test ] && md5sum /test" || echo 0" 我不会有任何问题。但是,如果我执行 "md5sum /test" 并且文件不存在,我将不得不强制关闭应用程序,因为它将无处可去。在这个例子中,解决方案是有原因的像在第一个示例中那样检查文件,但并非所有情况都如此简单。可能会发生问题,当它们发生时,人们不应该强制关闭应用程序。
有没有办法解决这个问题?
【问题讨论】:
-
您可能没有完全正确地读取它的 stdout/stderr 流
-
好的,你能举个例子说明如何正确地做到这一点吗?