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

你不需要第二次循环!您已经在单个字符串中捕获了每个任务名称。然后,只要测试该字符串是否包含您的任务名称。 –