2017-02-24 75 views
-2

我得到下面的代碼。它檢查程序是否正在運行。如果程序沒有運行,它會再次檢查它,直到它發現程序正在運行以結束循環。而事情是我不知道如何循環它。等待程序運行

public class Test { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) throws IOException { 

     String line; 
     String pidInfo =""; 

     Process p =Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe"); 

     try (BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()))) { 
      while ((line = input.readLine()) != null) { 
       pidInfo+=line; 
      }  
     } 

    while(pidInfo == "msiexec.exe") 
     if(pidInfo.contains("msiexec.exe")) { 
      System.out.println("Notepad is running"); 
      TimeUnit.SECONDS.sleep(120);   
     } else {  
      System.out.println("Notepad is not running"); 
      loop    
     }  
    } 
} 

但輸出爲空。任何人都可以告訴我我的代碼有什麼問題嗎?任何幫助,將不勝感激。

回答

0

因爲你的循環是錯誤的。首先,您有一個循環讀取單個String中的任務列表。因此,不太可能出現這個列表被縮減爲單個字msiexec.exe(請不要使用==來測試字符串),因此第二個循環的條件總是爲false(僅刪除第二個循環,然後測試pidInfo是否包含字或不)。

+0

我想第二個循環來檢查msiexec.exe是否正在運行。如果它沒有運行,它會再次循環來檢查它是否運行。如果找到指定的進程運行,則循環將終止。我上面編輯了我的代碼。 有沒有其他的代碼呢? –

+0

你不需要第二次循環!您已經在單個字符串中捕獲了每個任務名稱。然後,只要測試該字符串是否包含您的任務名稱。 –