Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.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 在android中执行pipe命令_Java_Android_Bash_Pipe_Exec - Fatal编程技术网

Java 在android中执行pipe命令

Java 在android中执行pipe命令,java,android,bash,pipe,exec,Java,Android,Bash,Pipe,Exec,我正在执行一个命令,以便将日志消息写入SD卡上的文件。这已经在起作用: String command = "logcat -f /storage/sdcard1/test.log"; Process logcatProcess = Runtime.getRuntime().exec(command); 现在,我想在将日志输出写入文件之前通过grep对其进行过滤,如下所示: String[] command = { "/system/bin/sh", "-c",

我正在执行一个命令,以便将日志消息写入SD卡上的文件。这已经在起作用:

String command = "logcat -f /storage/sdcard1/test.log";
Process logcatProcess = Runtime.getRuntime().exec(command);
现在,我想在将日志输出写入文件之前通过grep对其进行过滤,如下所示:

String[] command = {
        "/system/bin/sh",
        "-c",
        "logcat | grep -i Test01 >> /storage/sdcard1/test.log"
    };
Process logcatProcess = Runtime.getRuntime().exec(command);

当我从上面运行代码时,文件被创建,但没有内容。
grep
命令肯定已安装在系统上。这里出了什么问题?

logcat
正在输出到
grep
live,但是
grep
正在大批量处理数据。最后,如果有足够的输出,
grep
应该写出一些东西

(如果您正在向终端而不是向文件写入,
grep
的效率稍低,每看到一行都会刷新一次,让它感觉更具交互性。这不是Android的
grep
所特有的;您在Linux或OS X上也会看到这种行为。)

如果使用
logcat-d
,它将终止而不是轮询更多日志,并且
grep
也将写入并终止。如果这不是您想要的行为,那么您可能最终需要使用来包装
logcat
,并在Java应用程序中重新实现
grep
(无缓冲)