如何在不杀死其InputStream的情况下终止或暂停进程?

时间:2016-03-15 09:51:46

标签: android process

我想通过使用:

在应用程序内部启动getevent进程
Process get_event_process = Runtime.getRuntime().exec("getevent");

并使用BufferedReader

获取其输出
BufferedReader buffered_reader = new BufferedReader
      (new InputStreamReader(get_event_process.getInputStream()));

String line = "";
log = new StringBuilder();
while((line = buffered_reader.readLine()) != null) {
     log.append(line);
}

主要问题是getevent进程永远不会结束,除非它被杀死。如果我杀了这个过程,我将失去我的InputStream

有没有办法打断,暂停进程,并在此之前获得生成的输入?

或者有没有办法保存像sh -c getevent这样永不停止的过程的输入,即使我杀了这个过程?

1 个答案:

答案 0 :(得分:1)

好的,我找到了使用ProcessBuilder而不是Process的解决方案。

ProcessBuilder builder = new ProcessBuilder().command("getevent").redirectErrorStream(true);
Process get_event_process = builder.start();

不幸的是,它会停留在while循环中并给出如下输出:

/dev/input/event5  Permission denied.
/dev/input/event4  Permission denied.
/dev/input/event3  Permission denied.
/dev/input/event2  Permission denied.
/dev/input/event1  Permission denied.
/dev/input/event0  Permission denied.

因此,使用root手机,您可以使用以下方式获取输出:

chmod 666 /dev/input/*

干杯。