我试图运行以下指令,
Process p = Runtime.getRuntime().exec("/system/bin/lsof|grep mediaserver");
在android(java)但我收到错误。如果我遵循以下指示,
Process p = Runtime.getRuntime().exec("/system/bin/lsof ");
文件已成功保存。任何人都可以说出错误是什么?实际上我想列出并检查媒体服务器服务是否正在运行。
答案 0 :(得分:1)
您的设备上可能未安装grep实用程序。
您可以在控制台中尝试以下操作来检查它:
> adb shell
$ grep
grep: not found
最后一行表示此命令不可用。
答案 1 :(得分:0)
问题是Runtime.getRuntime().exec(...)
不知道如何处理shell语言。在Linux / Unix平台上你会这样:
Process p = Runtime.getRuntime().exec(new String[]{
"/bin/sh", "-c", "/system/bin/lsof | grep mediaserver"});
然而,(显然)Android默认没有命令shell /命令提示符。因此,您需要在设备上识别并安装合适的外壳,或者“手动”构建管道;即,通过创建“管道”文件描述符,并执行两个命令,以便lsof
写入管道,grep
从中读取。
也许答案就是像这样运行......
Process p = Runtime.getRuntime().exec(
"adb shell /system/bin/lsof | grep mediaserver");
(尝试从Java中以交互方式运行“shell ....”部分。)