【发布时间】:2016-03-02 23:02:58
【问题描述】:
我的 java 应用程序由父进程(windows)作为其子进程启动。
父进程将其环境变量中的PID发送给子进程。
在 Windows API 中,有一个WairForSingleObject 允许子进程等待父进程退出(包括进程终止)。
如何在JAVA中监控父进程的退出?
【问题讨论】:
-
当父进程终止时,子进程不会被终止吗?
标签: java
我的 java 应用程序由父进程(windows)作为其子进程启动。
父进程将其环境变量中的PID发送给子进程。
在 Windows API 中,有一个WairForSingleObject 允许子进程等待父进程退出(包括进程终止)。
如何在JAVA中监控父进程的退出?
【问题讨论】:
标签: java
您可以使用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);
【讨论】:
OpenProcess等待时获得WinNT.SYNCHRONIZE访问权限。