2013-08-13 2 views
3

Является ли Java Process, который был создан с помощью Runtime.exec, убитого, когда время выполнения, которое создало процесс, погибло? Или я должен убить их вручную, например. путем установки крюка отключения и уничтожения всех оставшихся процессов через Process.destroy. Javadoc только говорит о том, что происходит, когда среда исполнения продолжает существовать.Срок службы процесса Runtime.exec

ответ

3

Java Process создан как подпроцесс JVM. Все операционные системы, которые я знаю о подпроцессах kill, когда родительский процесс завершается.

Однако, если процесс, который вы создаете, создает свои собственные процессы, которые не являются его дочерними процессами (или отделяются, например, в случае приложений Windows GUI), они могут продолжать работу после завершения JVM. Существует проблема, которая может быть связана с описанным in this question.

+1

Он говорит о объекте Process, созданном с помощью Runtime.exec, который действительно является отдельным процессом. –

+0

Подпроцессы * являются * отдельными процессами. Насколько я понимаю http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html, любой «процесс», независимо от того, как он был создан, представляет собой подпроцесс процесса создания. Фактически это необходимо для доступа к входным и выходным потокам нового процесса. Проверьте дерево процессов в вашем любимом диспетчере задач, вы увидите, что JVM является родительским процессом. –

+0

+1, хороший ответ. Я должен сам это вспомнить. –

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