2012-06-21 2 views
4

Я использую класс Runtime для выполнения части установки программного обеспечения. Тем не менее, его не работает, а это значит, что после того, как я запустил задание (которое создается с использованием класса Runtime), через некоторое время (что очень скоро) задание на установку просто завершается. Я думаю, проблема заключается в том, что основной поток должен заканчиваться и, таким образом, убивать процесс, созданный с использованием класса Runtime. Я прав ? И какое решение здесь?Выполняет ли основной поток в java перед любыми процессами, которые он может создать, используя выполнение класса Runtime, выполняющий

это, как я огнь своей работы в Teh основного класса:

try 
     { 
      Runtime.getRuntime().exec(cmd); 
     }        
     catch(IOException e)  
     { 
      //add logging functionality 
      e.printStackTrace(); 
     } 

Вскоре после этой команды, основная функция заканчивается.

Нет проблем с командой Runtime. Он работает. Я даже вижу, как он запускается (установка taht я стреляю через код), а затем он внезапно выходит.

ответ

5

Возможно, вы захотите проверить класс java.lang.Process. Вероятно, вы хотите что-то вроде этого:

 Process process = Runtime.getRuntime().exec(cmd); 
     process.waitFor(); 

Подпроцесс может получать SIGHUP и выйти.

EDIT:

В контексте, что-то вроде этого, я думаю:

try 
    { 
     Process process = Runtime.getRuntime().exec(cmd); 
     process.waitFor(); 
    }        
    catch(IOException e)  
    { 
     //add logging functionality 
     e.printStackTrace(); 
    } 
    catch(InterruptedException e)  
    { 
     e.printStackTrace(); 
    } 
+0

спасибо, это сработало! – Chani

0

Это просто дикое предположение, но я думаю, что к программе бросить курить, потому что у вас есть ошибки в коде (логический), может быть, время цикла, который выходит в ближайшее время,

пытаются хорошо выглядеть в коде, что Выполняется время выполнения.

Процесс, вероятно, находится в тупике. Решение находится в комментариях с образцом.

+1

привет, я на 100% уверен, что в коде, который запускается во время выполнения, нет проблем. Я тестировал его отдельно. – Chani

+0

попробуйте этот сайт: http://vyvaks.wordpress.com/2006/05/27/does-runtimeexec-hangs-in-java/ –

+0

Это, вероятно, тупик процесса. –

1

Процесс создал это ребенок процесс для основного потока. Если основной поток будет завершен, процесс будет убит, как если бы вы выполнили команду вручную и нажали ctrlc или закрыли окно.

 Смежные вопросы

  • Нет связанных вопросов^_^