Возможно ли обрабатывать сигналы POSIX в виртуальной машине Java?
По крайней мере SIGINT и SIGKILL должен быть совершенно независимым от платформы.
Ответ 1
JVM самостоятельно реагирует на сигналы. Некоторые из них приведут к тому, что JVM будет отключен изящно, что включает в себя запуск завершающих перехватчиков. Другие сигналы приведут к тому, что JVM прекратит работу, не запуская крючки отключения.
Я не думаю, что JDK предоставляет официальный способ обработки сигналов в вашем Java-приложении. Тем не менее, я нашел эту статью IBM, в которой описывается использование некоторого недокументированного класса sun.misc.Signal, чтобы сделать именно это. Статья датируется 2002 годом и использует JDK 1.3.1, но я подтвердил, что класс sun.misc.Signal все еще существует в JDK 1.6.0.