如何解决如何将SIGINT传递给用Java创建的进程?
| 我已经使用ѭ0创建了一个进程,并且需要一种杀死进程的方法,就像使用Ctrl + C一样。我已经开始的过程是一个视频录制工具,该工具专门查找键盘中断以写入视频文件并干净地关闭所有连接。不幸的是,Process.destroy
不会这样做。在Java中,还有其他方法可以使用该过程的句柄吗?
解决方法
您基本上需要在进程上执行kill命令来发送信号。我认为Java没有办法直接做到这一点。您可能能够使用Runtime.exec()杀死命令本身。
, 我可以想到一个不太干净的解决方案,例如编写一个小的shell脚本来调用
kill -2 `pidof executable`
(如果您不介意杀死每个进程,则killall -2 executable
)。一个更干净的解决方案是从Java检索进程ID,但我不知道如何(或是否)可以完成。
, 使用以下命令杀死Java时,应该杀死进程!
Process process = Runtime.getRuntime().exec();
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
process.destroy();
}
}));
process.waitFor();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。