Чтобы вызвать процесс, который выживает после завершения JVM, вам нужно использовать Runtime.exec()
. Поскольку вы хотите, чтобы он запускался после завершения основного процесса, на самом деле есть два способа сделать это:
1) Если вы хотите, чтобы процесс запускался только во время чистого отключения, вы можете сделать это:
public static void main(String[] args) {
doThisProgramsStuff();
spawnSecondProcess();
}
2) Или, если вы хотите, чтобы процесс запускался даже с нечистым завершением работы (или если это приложение с графическим интерфейсом), тогда вы можете добавить обработчик отключения:
public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
spawnSecondProcess();
}
});
doThisProgramsStuff();
}
Однако существует проблема со всем этим. Как только JVM завершает работу, дочерний процесс будет иметь стандартный ввод / вывод, ни к чему не привязанный, поэтому он может заполнить свои выходные буферы и блокировать. Вам нужно будет что-то сделать, чтобы убедиться, что этого не произойдет, либо убедившись, что процесс не выводит данные в эти потоки, либо сделав эквивалент Windows для перенаправления в /dev/null.
.