2017-03-01 59 views
3

所以我有這樣的代碼打印出從任務管理器中運行的進程到IDE在NetBeans,但我想掃描過程的輸出,所以我可以我當時的PC上列出最高的正在運行的進程?Java:如何掃描最高編號的ide輸出?

public static void main(String[] args) throws IOException { 
    try { 
    String tasklist; 
    Process p = Runtime.getRuntime().exec 
    (System.getenv("windir") +"\\system32\\"+"tasklist.exe"); 
    try (BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()))) { 
     while ((tasklist = input.readLine()) != null) { 
     System.out.println(tasklist); //<-- Parse data here. 
    } 
} 
} catch (IOException err) { 
    err.printStackTrace(); 
} 
} 

這給我下面的輸出,例如,如果我想殺人的NetBeans,因爲它運行在500,000k會怎麼做呢?

Image Name      PID Session Name  Session Mem Usage 

chrome.exe     3464 Console     3 159,672 K 
netbeans64.exe    3664 Console     3 592,216 K 
chrome.exe     3808 Console     3 384,556 K 
java.exe      2040 Console     3  36,732 K 
tasklist.exe     2208 Console     3  6,196 K 
+0

好吧,如果你正在運行這裏面* * netbeans的,你最好不要殺它或者你將無法再看到列表......無論如何,在你的程序中,你有'tasklist'行。將其解析爲有意義的數據,將其放入一個對象列表中,對其進行排序,然後根據排序列表執行任何您需要的操作。 – RealSkeptic

+3

並提示:隨時通過評論給我的答案提供反饋。我經常看到一些新手提出問題的最後幾天......並且永遠不會回來。沒有評論,沒有upvote,沒有接受。所以,請考慮提供某種形式的反饋;-) – GhostCat

+0

例子,現在你達到給予好評代表,你可以給予好評......並發表評論;-) – GhostCat

回答

4

您迭代該數據;並收集你感興趣的屬性;例如名稱,PID,當然還有mem的用法。

你可能會創建一個像

public class RunningProcessInfo { 
    private final String name ... 

    public RunningProcessInfo(String name, int pid, int memUsage) { 

換句話說類:你寫解析代碼,需要一個行

的chrome.exe 3464控制檯3 159672ķ

,並輪流到這

new RunningProcessInfo("chrome.exe", 3464, 159672) 

(通過解析字符串輸入;並將諸如「3464」的字符串轉換爲數字,等等)。

含義:你的東西與processInfos是一些ArrayList<RunningProcessInfo>parseLine()在於方法,它採用單線並獲取數據來建立一個新的RunningProcessInfo對象替換線System.out.println(tasklist);沿着

processInfos.add(parseLine(tasklist)); 

線。

你收集在一個列表中的那些對象。然後,您遍歷該列表以查找符合特定條件的所有對象。

最後你可以使用另一個進程生成器發送命令來殺死那些你打算殺死的PID(見here爲例子,說明如何做到這一點)。當然,你要注意 - 因爲你肯定不希望在該屆會議上運行您的程序來殺你的NetBeans會議...

+0

感謝您的幫助和快速反應!你有沒有建議迭代我的數據來收集屬性? – Codeo

+0

我增強了有關「循環」部分的答案(因爲它已經存在)。解析,你可以在這裏得到的想法http://stackoverflow.com/questions/11871520/how-can-i-read-input-from-the-console-using-the-scanner-class-in-java(你可以使用掃描儀;只是不在System.in;但你的文件),或者你使用一個標記器:http://stackoverflow.com/questions/691184/scanner-vs-stringtokenizer-vs-string-split ...許多選擇;由你決定。所以,請退後一步,先消化這個;當你有一個非常具體的問題時,寫一個新的問題。 – GhostCat