Как получить статус завершения процесса в Java? - PullRequest
0 голосов
/ 28 октября 2011

Я запустил внешний инструмент через функцию 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 ]

2 голосов
/ 28 октября 2011

Я думаю, это из-за start в вашей команде. Вы, вероятно, делаете это, чтобы избежать окна cmd, но я думаю, что вы не можете тогда не взаимодействовать с программой.

Попробуйте

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

Также обратите внимание, что

  • Вам также необходимо прочитать stderr (p.getErrrorStream())
  • Runtime.exec - не лучший способ запустить дочерний процесс. ProcessBuilder это более новый и лучший способ сделать это.
1 голос
/ 28 октября 2011

Я думаю, что классический Когда Runtime.exec () не будет , все равно лучше это объясняет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...