2012-08-16 54 views
0

我想寫一個小工具,重新啓動一定數量的jar,如果它們已被終止。如何知道以「cmd start」開頭的進程的狀態?

private static void checkAndRestartProcesses() { 
    for (int i=0; i<processes.size(); i++) { 
     try { 
      processes.get(i).exitValue(); 
      processes.remove(i); 
     } catch (IllegalThreadStateException ex) { 
     } 
    } 
    try { 
     for (int i=processes.size(); i<Config.NR_PROCESSES; i++) { 
      ProcessBuilder pb = new ProcessBuilder("cmd", "/c start cmd /c java -jar bla.jar"); 
      Process p = pb.start(); 
      processes.add(p); 
     } 
    } catch (IOException ex) { 
    } 
} 

的問題是,流程開始「CMD啓動」退出之後,他們執行的子過程(因此,不存在IllegalThreadStateException)。 我如何跟蹤子進程(無論它們是否被終止)? 或者:如何在不使用「cmd start」的情況下在單獨的cmd中啓動子進程? 我需要啓動的例程在新的cmd中。

非常感謝。

+1

爲什麼你使用'CMD使用/等待標誌在啓動/ C開始'的___在這裏,而不是''___? – 2012-08-16 22:20:57

+0

我想爲每個進程都有一個獨立的cmd窗口。 – dotwin 2012-08-16 22:25:50

回答

1

你需要

cmd /c start /wait java -jar bla.jar 
+0

這是真棒...正是我想知道的。謝謝你噸。 – dotwin 2012-08-16 22:55:58