如何在不杀死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/* 

干杯。