Comment puis-je “intercepter” Ctrl + C dans une application CLI?

Comment puis-je intercepter Ctrl + C (qui normalement tuerait le processus) dans une application Java CLI (interface de ligne de commande)?

Existe-t-il une solution multi-plateforme (Linux, Solaris, Windows)?

J’utilise readLine() Console , mais si nécessaire, je pourrais utiliser une autre méthode pour lire les caractères de l’entrée standard.

 Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { /* my shutdown code here */ } }); 

Cela devrait pouvoir intercepter le signal, mais seulement comme étape intermédiaire avant que la JVM ne se ferme complètement, de sorte que ce ne soit pas ce que vous recherchez.

Vous devez utiliser un SignalHandler ( sun.misc.SignalHandler ) pour intercepter le signal SIGINT déclenché par Ctrl + C (sous Unix et sous Windows).
Voir cet article (pdf, pages 8 et 9).

Je suppose que vous voulez arrêter normalement et ne pas court-circuiter le processus d’arrêt. Si mon hypothèse est correcte, alors vous devriez regarder les crochets d’arrêt .