2013-07-31 67 views
1

如何解析linux遊標程序的輸出,例如java中的top? 我想有人給一個例子或鏈接一個。現在,我得到了像Process對象一樣的頂級運行。順便說一句,這只是一個這樣的程序的例子。解析遊標輸出java

String[] args={"top"}; 
Process process = new ProcessBuilder(args).start(); 

回答

1

你不能進行。使用curses編寫的程序不會像典型的命令行程序那樣輸出字符流,甚至不會使用退格技巧輸出字符流。相反,它使用操作系統特定的調用,例如ioctl和特定於實現的轉義序列,如TermInfo中所述。一般來說,Unix系統上的這些程序是執行所有必要工作的庫的簡單前端,最好的選擇是通常使用這些庫(如果沒有可用的話,編寫一個JNI包裝器)。

top的情況下,您可以看到程序如何從源代碼中讀取操作系統的進程信息,作爲the procps package的一部分提供。

0

第一步將閱讀所有過程輸出中的數據,其可以使用Process.getInputStream()方法

Process p = new ProcessBuilder("top").start(); 
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 
String line; 
while((line = br.readLine()) != null) { 
    System.out.println(line); 
} 
+0

這段代碼給出了空的BufferedReader,輸出不能用這種方式解析 –

+0

如果上面的代碼沒有打印任何東西,那麼'top'命令不打印輸出? – sanbhat

+0

是正確的,它可能使用一些光標特殊的東西,這正是想要如何解析。它顯然可以通過bash進行分析,因爲它會將它輸出到我的屏幕:/也許我可以在Process對象中啓動bash並從該bash進程開始頂部並獲取輸出?S –