当前位置: 首页 > 面试题库 >

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

爱唯
2023-03-14
问题内容

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


问题答案:

不使用纯Java。

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

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

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



 类似资料:
  • 问题内容: 在Linux中,当我在java.lang.Process对象上运行destroy函数(类型为true的java.lang.UNIXProcess)时,它会发送SIGTERM信号进行处理,有没有办法用SIGKILL杀死它? 问题答案: 不使用纯Java。 你最简单的选择是使用运行的外部进程的命令。 不幸的是,掌握PID并不是那么简单。您将需要使用反射黑魔法来访问该字段,或者弄乱该命令的输

  • 问题内容: 我想知道如何“杀死”已启动的过程。我知道Process API,但是不确定,是否可以使用它来杀死已经运行的进程,例如firefox.exe等。如果可以使用Process API,可以请您指向正确的方向?如果没有,还有哪些其他可用选项?谢谢。 问题答案: 如果你从Java应用程序中以从头开始处理(例如,通过调用或),那么你将对其具有有效的引用,并且可以在Process类中调用该方法以终止

  • 我如何在linux(ubuntu)中杀死这个进程?

  • 错误: 内存不足,Java运行时环境无法继续。本机内存分配(mmap)无法映射71827456字节以提交保留内存。可能的原因:系统在32位模式下没有物理RAM或交换空间,遇到了进程大小限制。可能的解决方案:减少系统上的内存负载增加物理内存或交换空间检查交换备份存储是否已满在64位OS上使用64位Java减少Java堆大小(-xmx/-xms)减少Java线程数量减少Java线程堆栈大小(-xs)设

  • 问题内容: 我在前台启动了我的程序(守护程序),然后用杀死了它,但剩下一个僵尸,无法用杀死它。如何杀死僵尸进程? 如果僵尸是一个死进程(已被杀死),我如何将其从输出中删除? 问题答案: 僵尸已经死了,所以您无法杀死它。要清理僵尸,必须等待其父级等待,因此杀死父级应该可以消除僵尸。(父对象死后,僵尸将被pid 1继承,而pid 1将等待该僵尸并清除其在进程表中的条目。)如果守护程序正在生成成为僵尸的

  • 问题内容: 使用shelljs创建一个子进程 杀死父进程后,子进程仍在运行.. 问题答案: 如果您可以使用node的内置,则可以向子进程发送信号: 这样做的好处是,主进程应该一直徘徊,直到所有子进程都终止。