如果是这样,我如何找出它(在系统中的所有其他进程中)以及如何杀死它以使其shutdownhook被执行?
我想这样做的原因是因为我想实现像apache start,apache stop之类的东西,在调用apache start或apache stop之后,服务器进程在后台启动或停止,然后我得到命令或bash提示符;这假设适用于linux和windows。
答案 0 :(得分:4)
这是可能的,但它将是特定于操作系统的。 JVM中没有任何内容可以自动为您提供杀死其他虚拟机的权限。
您需要调用操作系统的kill
命令(或等效命令)或编写一些本机代码。
可以这样做,如果你只打算在类似unix的系统上运行,那么你最好的选择就是编写一个可以做你想做的shell脚本,然后用ProcessBuilder
执行它。和朋友们。
答案 1 :(得分:2)
你可以考虑在服务方面打开一个服务,这个服务是关闭的,由主应用程序处理。
另一方面,如果你不想这样做,你需要找到一种方法来获取jvm实例的进程。如果你只想杀死jvm,那么对于一个特定的过程来说这很容易。你需要一些帮助,比如:
希望它适用于你
答案 2 :(得分:0)
我认为你可以使用JMX。
您可以在java进程中启动JMX服务器,并打开一些启动和停止等API。
使用JMX,您无需实现有关套接字和权限的任何内容。您只需要使用JMX提供远程调用的函数。您还可以设置用户和密码以进行访问。