如何在不杀死InputStream的情况下杀死或暂停进程?
问题描述:
我想通过使用来启动应用程序中的getevent
过程:如何在不杀死InputStream的情况下杀死或暂停进程?
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
这样一个永无止境的进程的输入,即使我杀死了进程?
答
好吧,我找到了使用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.
所以有根深蒂固的手机,你可以通过使用得到的输出:
chmod 666 /dev/input/*
干杯。