Почему мой код «if (p.exitValue ()! = 0)» выполняется дважды?

1

Когда я запускаю оболочку script, используя метод ниже, мой код if (p.exitValue()!= 0) запускается TWICE, когда он успешно... кто-нибудь знает почему? Кроме того, когда оболочка script выходит из строя, код else запускается один раз, а затем код успеха снова запускается. Что я делаю не так?

void exec(String commander){


            Process p = null;
        try {
            p = Runtime.getRuntime().exec(commander);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

           StreamGobbler errorGobbler = new 
           StreamGobbler(p.getErrorStream(), "ERROR"); 

           // any output? 
           StreamGobbler outputGobbler = new 
           StreamGobbler(p.getInputStream(), "OUTPUT"); 

           // kick them off 
           errorGobbler.start(); 
           outputGobbler.start(); 

           // any error??? 
           int exitVal = 1;
        try {
            exitVal = p.waitFor();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

        System.out.println("ExitValue: " + exitVal); 

        if (p.exitValue() != 0)
         {

        //SUCCESS Code RUNS TWICE

         }
         else {


            //FAILURE Code Runs Once, then Success Code Runs anyway!! WHY? 


         }

       }
  • 0
    Я не вижу ничего в этом фрагменте кода, который показывает, почему эта строка будет работать дважды. Можете ли вы опубликовать код, который вызывает exec ()?
  • 0
    Для более быстрой помощи, опубликуйте SSCCE .
Теги:

1 ответ

0
Лучший ответ

Возможно, ваш вызов void exec(String commander) вызывается дважды. Вы проверили это?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню