如何将SIGINT传递给在java中创建的进程?

时间:2011-06-14 06:28:43

标签: java

我使用Runtime.exec创建了一个进程,我需要一种方法来杀死进程,就像使用 Ctrl + C 一样。我开始的过程是一个视频录制工具,专门查找键盘中断,以便写入视频文件并干净地关闭所有连接。不幸的是,Process.destroy没有这样做。在java中有没有其他方法可以使用我对进程的句柄?

3 个答案:

答案 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();