如何在java中获取进程结束状态?

时间:2011-10-28 04:44:38

标签: java process

我在单独的命令行控制台中通过exce()函数运行了一个外部工具。

command = "cmd.exe /c start /min doxygen " + strDoxyfilePath;   
System.out.println("command : " + command);

//pass the command to execute
Process p=Runtime.getRuntime().exec(command);

我用它来读取输入流:

BufferedReader br = new BufferedReader(new InputStreamReader
    (p.getInputStream(), "UTF-8")); //read output of doxygen
String line = null;
while ((line = br.readLine()) != null){
    System.out.println("I M HERE: "+line);
}

但是循环中控制不进入内部,我想在过程结束时获得正确的信号。

2 个答案:

答案 0 :(得分:2)

我认为这是因为你的命令中有start。您可能正在这样做以避免使用cmd窗口,但我认为您无法与该程序进行交互。

尝试

command = "cmd.exe /c doxygen " + strDoxyfilePath;   

另外,请注意

  • 您还需要阅读stderr(p.getErrrorStream()
  • Runtime.exec不是启动子进程的好方法。 ProcessBuilder是更新,更好的方法。

答案 1 :(得分:1)

我认为经典When Runtime.exec() won't仍然是最好的解释。