2013-04-22 1 views
0

Я пытаюсь прочитать значение выхода из внешней программы, но это всегда 0.Неправильное значение выхода из внешней программы

String command = ("cmd /c start /wait "+ Script[0]);       
Process exec = runtime.exec(command);     
int waitFor = exec.waitFor(); 
System.out.println(exec.exitValue);  //always 0 
System.out.println(waitFor); //always 0  

Программа используется для программных модулей, и мне нужно знать, существуют ли какие-либо ошибки х.

Как получить значение выхода приложения?

+2

Вы получаете значение выхода из cmd, а не своей программы. –

+1

Советы: 1) Изменить 'String command = (" cmd/c start/wait "+ Script [0]);' to 'String [] command = (" cmd ","/c "," start ","/wait ", Script [0]);' 2) Используйте ['ProcessBuilder'] (http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html), чтобы создать' Process'. 3) Внесите все советы в [Когда Runtime.exec() не будет] (http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html). –

+0

Что заставляет вас запускать 'Script [0]' напрямую? –

ответ

1

Программа, которую вы на самом деле запускаете, это программа cmd, а не то, что вы используете под этим.

Для получения основного кода выхода см. How do I get the application exit code from a Windows command line?.

+0

У меня есть другой вопрос. Я использую программу командной строки stk500.exe, поэтому я должен использовать «cmd» правильно? – user2305158