相关疑难解决方法(0)

用于强制终止子进程的Java工具/方法

我正在寻找一个允许我强制杀死子进程的Java工具/包/库.

此工具/包/库必须在Windows平台上运行(必需).需要支持Linux/Unix.

我的问题

我的Java代码创建了一个子进程,它根本不会对用于终止子进程的标准Java方法做出反应:process.destroy(),并且,由于我没有子进程的源代码,我无法对其进行编程以更好地处理终止请求.

我已经尝试在调用destroy()之前关闭子进程的错误输入和输出流,并且没有效果.

我甚至尝试将ctrlBreak信号(char = 3)直接传递给child.getOutputStream(),并再次收到相同的结果.

我终于找到的解决方法是:

  1. 在创建时获取子PID这可以通过在子项创建之前和之后区分进程列表在Windows中完成(getRuntime().exec("tasklist /v"))

  2. 使用子PID
    在Windows中发出强制终止系统命令:getRuntime().exec("taskkill /pid " + childPid + " /f")

但是 - 这是复杂的代码我不想调试和维护,加上问题本身,我毫不怀疑,以前遇到过许多其他java开发人员,这让我希望这样的Java工具/包/库已经存在.

我只是不知道它的名字......

PS:我的子进程是由创建的Runtime.getRuntime().exec(cmd),但我使用ProcessBuilder得到了相同的行为.

java kill process

14
推荐指数
1
解决办法
1万
查看次数

Java - Linux的Process.destroy()源代码

我需要检查一下代码,Process.destroy()看看它kill在Linux上是一个什么样的子进程.

有谁知道这个方法的作用或链接到它的来源?我检查了jdk源代码,Process它只是一个抽象类,并且该destroy方法尚未实现,似乎没有链接到任何子类extends或者implements Process.任何帮助将不胜感激.

谢谢,

java linux kill process

14
推荐指数
1
解决办法
5804
查看次数

标签 统计

java ×2

kill ×2

process ×2

linux ×1