Как я могу «перехватить» Ctrl + C в приложении CLI?

Как я могуintercept Ctrl+C (что обычно убивает процесс) в CLI (интерфейс командной строки) Java-приложения?

Существует ли мультиплатформенное решение (Linux, Solaris, Windows)?

Я используюConsole& APOS; sreadLine(), но при необходимости я мог бы использовать другой метод читать символы из стандартного ввода.

Ответы на вопрос(4)

как обращаться с SIGTERM - это сигнал, который программа получает на стороне ОС:

http://blog.webinf.info/2008/08/intercepting-sigterm.html

http://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/signals.html

http://www.ibm.com/developerworks/java/library/i-signalhandling/

Это должно работать в операционных системах POSIX, то есть Mac и Unix должны работать, в Windows, я не уверен, я помню, что слышал, что это также POSIX-совместимый в некоторой степени, но может сильно зависеть от разных версий.

 24 окт. 2016 г., 18:31
третья ссылка тоже не работает
 08 апр. 2011 г., 11:43
Вторая ссылка не работает. Это изменилось на Oracle вoracle.com/technetwork/java/javase/tsg-vm-149989.pdf?

Ctrl+C без необходимости выключения по какой-либо причине вам потребуется использовать некоторую форму обработки сигналов (посколькуCtrl+C ввод фактически не передается непосредственно в ваше приложение, а обрабатывается операционной системой, которая генерирует SIGINT, который затем передается в Java.

Увидетьhttp://www.oracle.com/technetwork/java/javase/signals-139944.html для деталей об обработке сигналов.

(Если вы просто хотите изящно завершить работу, ответа akf будет достаточно.)

Решение Вопроса
Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() { /*
       my shutdown code here
    */ }
 });

но только в качестве промежуточного шага до того, как JVM полностью отключится, поэтому это может быть не то, что вы ищете.

Вам нужно использоватьSignalHandler (sun.misc.SignalHandlerперехватитьSIGINT сигнал запускаетсяCtrl+C (как в Unix, так и в Windows).
УвидетьЭта статья (pdf, стр. 8 и 9).

 03 дек. 2017 г., 13:27
@VonC - он снова мертв
 11 апр. 2014 г., 15:59
Ссылка мертва ...
 11 апр. 2014 г., 16:06
@MartijnCourteaux Это происходит через пять лет;) Я нашел похожий источник по этой теме и соответственно изменил ссылку.
 03 дек. 2017 г., 14:24
@GurV Какая ссылка? Правка, которую я сделал в апреле 2014 года (stackoverflow.com/revisions/…) по-прежнему в силе: вы все еще можете скачать файл PDF

что вы хотите корректно завершить работу, а не замыкать процесс выключения. Если мое предположение верно, то вы должны посмотреть наОтключение крючков.

 ivan_ivanovich_ivanoff01 авг. 2009 г., 10:40
Никогда раньше не слышал о крюках отключения. Спасибо!

Ваш ответ на вопрос