一尘不染

如何使用SIGKILL Process.destroy()杀死Java中的Linux进程

linux

在Linux中,当我在java.lang.Process对象上运行destroy函数(类型为true的java.lang.UNIXProcess)时,它会发送SIGTERM信号进行处理,有没有办法用SIGKILL杀死它?


阅读 567

收藏
2020-06-03

共1个答案

一尘不染

不使用纯Java。

你最简单的选择是使用Runtime.exec()运行kill -9 <pid>的外部进程的命令。

不幸的是,掌握PID并不是那么简单。您将需要使用反射黑魔法来访问该private int pid字段,或者弄乱该ps命令的输出。

更新
-实际上,还有另一种方法。创建一个小的实用程序(C程序,shell脚本等),它将运行真正的外部应用程序。对实用程序进行编码,以便它记住子进程的PID,并为SIGTERM设置信号处理程序,该信号处理程序将对子进程进行SIGKILL。

2020-06-03