2017-04-21 74 views
-2

對於java程序,我希望獲得所有包含相同單詞(例如「cheese」)的進程並殺死它們。獲取名稱中包含相同單詞的所有進程使用Java

我搜索的計算器,但我已經嘗試了所有可能不起作用:/

我知道如何殺死一個任務,但不知道如何讓所有進程至極有一個包含同一個詞的名稱。

那麼,我該怎麼做?

祝您有美好的一天! :d

(對不起我的英文不好我很年輕,我是法國人:/)

+0

歡迎來到SO。你應該發佈一些你的代碼嘗試。否則,你會得到一堆倒票和評論,說這不是一個代碼寫作服務。 – BWMustang13

+0

你到目前爲止嘗試過什麼?究竟是什麼問題?您使用什麼操作系統?英語不好不是問題,但提供的問題信息不足。 – halileohalilei

+0

第1步:獲取所有正在運行的進程的列表。第2步:使用正則表達式來查找與您的單詞匹配的正則表達式。第3步:終止匹配的進程。第4步:哭,因爲你在你的正則表達式中犯了一個錯誤,並殺死了你的機器上的所有進程...(我只是說它可能是一個壞主意,擺在首位) – Imus

回答

0

注意:在Windows計算機上這隻作品。

這將創建一個列表,其名稱中包含word的所有進程。

public static ArrayList<String> getProccessWithString(String word){ 
     ArrayList<String> list = new ArrayList<String>(); 
    try { 
     String line; 
     Process p = Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe"); 
     BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     while ((line = input.readLine()) != null) { 
      if(line.indexOf(word) > 0){ 
       list.add(line); 
      } 
     } 
     input.close(); 
    } catch (Exception err) { 
     err.printStackTrace(); 
    } 
    return list; 
    } 

,它被稱爲是這樣的:

ArrayList<String> list = getProccessWithString("word"); 

然後你可以使用一個循環來殺死他們:

for(int i = 0; i < list.size(); i++){ 
Runtime.getRuntime().exec("taskkill /F /IM " + list.get(i)); 
} 

您需要運行該程序作爲管理員,因爲taskkill是一個提升的命令。

+0

最後的代碼看起來是特定於操作系統的。並非所有代碼都在Windows上運行。 –

+0

@AndyThomas我知道,雖然你很難在你自己的操作系統之外工作:/ –

+0

工作感謝! :) –

相關問題