Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法运行grep命令_Java_Android_Linux_Android Mediaplayer_Lsof - Fatal编程技术网

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替代方案?请检查: