2016-03-02 10 views
2

Приложение для Java запускается родительским процессом (windows) в качестве его дочернего процесса.Процесс Java: Подождите, пока выйдет родительский процесс.

Родительский процесс отправляет свой PID в переменной окружения в дочерний процесс.

В Windows API есть WairForSingleObject, который позволяет дочернему процессу ждать выхода родительского процесса (включая завершение процесса).

Как я могу контролировать выход родительского процесса в JAVA?

+3

Не будет ли дочерний процесс прекращается в любом случае, когда родитель будет прекращено? – Thomas

ответ

0

Вы можете использовать JNA, чтобы использовать WaitForSingleObject. Все, что вам нужно сделать, это добавление JNA библиотеки на пути к классам:

<dependency> 
    <groupId>net.java.dev.jna</groupId> 
    <artifactId>jna</artifactId> 
    <version>4.2.1</version> 
</dependency> 
<dependency> 
    <groupId>net.java.dev.jna</groupId> 
    <artifactId>jna-platform</artifactId> 
    <version>4.2.1</version> 
</dependency> 

После этого вы можете просто позвонить:

WinNT.HANDLE handle = Kernel32.INSTANCE.OpenProcess(0, false, pidOfAnyProcess); 
Kernel32.INSTANCE.WaitForSingleObject(handle, Kernel32.INFINITE); 
+0

Спасибо, только одна коррекция: дочерний процесс должен получить право доступа 'WinNT.SYNCHRONIZE', когда' OpenProcess' ждет его. –

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