Java 无法运行grep命令
我试图运行以下指令Java 无法运行grep命令,java,android,linux,android-mediaplayer,lsof,Java,Android,Linux,Android Mediaplayer,Lsof,我试图运行以下指令 Process p = Runtime.getRuntime().exec("/system/bin/lsof|grep mediaserver"); Process p = Runtime.getRuntime().exec("/system/bin/lsof "); 在android(java)中,但我遇到了错误。如果我按照指令运行 Process p = Runtime.getRuntime().exec("/system/bin/lsof|grep medi
Process p = Runtime.getRuntime().exec("/system/bin/lsof|grep mediaserver");
Process p = Runtime.getRuntime().exec("/system/bin/lsof ");
在android(java)中,但我遇到了错误。如果我按照指令运行
Process p = Runtime.getRuntime().exec("/system/bin/lsof|grep mediaserver");
Process p = Runtime.getRuntime().exec("/system/bin/lsof ");
文件已成功保存。有人能说出错误是什么吗?实际上,我想列出并检查媒体服务器服务是否正在运行。您的设备上可能没有安装grep实用程序 您可以通过在控制台中尝试以下操作进行检查:
> adb shell
$ grep
grep: not found
最后一行表示此命令不可用。问题是
Runtime.getRuntime().exec(…)
不知道如何处理shell语言。在Linux/Unix平台上,您可以这样做:
Process p = Runtime.getRuntime().exec(new String[]{
"/bin/sh", "-c", "/system/bin/lsof | grep mediaserver"});
然而,(显然)Android在默认情况下没有命令shell/命令提示符。因此,您需要在设备上识别并安装合适的外壳,或者“手动”构建管道;i、 e.创建一个“管道”文件描述符,并执行两个命令,以便lsof
写入管道并grep
读取管道
也许答案是这样运行它
Process p = Runtime.getRuntime().exec(
"adb shell /system/bin/lsof | grep mediaserver");
(在从Java执行之前,请尝试从adb以交互方式运行“shell…”部分。)好吧,既然是您出错了,也许您可以告诉我们错误是什么。也许我们可以帮你,不是吗?猜猜看?既然您必须将/system/bin放在lsof命令前面,那么也可以尝试将grep的路径放在那里?i、 e.使用/system/bin/lsof |/system/bin/grep mediaserver”或任何指向grep的路径。我收到以下错误W/system.err(345):java.io.IOException:error running exec()。命令:[/system/bin/lsof | grep,init]工作目录:null环境:null感谢您的回复,我收到错误W/system.err(1370):java.io.IOException:运行exec()时出错。命令:[/bin/sh,-c,/system/bin/lsof | grep init]工作目录:null环境:null此字符串用于“/bin/sh”什么?如果缺少grep,我可以做什么?是否有shell替代方案?请检查: