我使用Runtime.exec
创建了一个进程,我需要一种方法来杀死进程,就像使用 Ctrl + C 一样。我开始的过程是一个视频录制工具,专门查找键盘中断,以便写入视频文件并干净地关闭所有连接。不幸的是,Process.destroy
没有这样做。在java中有没有其他方法可以使用我对进程的句柄?
答案 0 :(得分:0)
你基本上需要在进程上执行kill命令来发送信号。我不认为Java有办法直接这样做。你可以运行runtime.exec()kill命令本身。
答案 1 :(得分:0)
我可以想到一个不太干净的解决方案,例如编写一个调用kill -2 `pidof executable`
的小shell脚本(或killall -2 executable
,如果你不介意杀死每个进程)。一个更清洁的解决方案是从java中检索进程ID,但我不知道它是如何(或者如果)可以完成的。
答案 2 :(得分:-1)
使用以下命令杀死Java时应该杀死进程!
Process process = Runtime.getRuntime().exec();
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
process.destroy();
}
}));
process.waitFor();