2016-03-15 115 views
0

我想通過使用來啓動應用程序中的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這樣一個永無止境的進程的輸入,即使我殺死了進程?

回答

0

好吧,我找到了使用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/* 

乾杯。