Maison  >  Article  >  Java  >  Comment intercepter Ctrl C dans les applications Java CLI sur toutes les plates-formes ?

Comment intercepter Ctrl C dans les applications Java CLI sur toutes les plates-formes ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 02:00:28498parcourir

How to Intercept Ctrl C in Java CLI Applications Across Platforms?

Interception de Ctrl C dans les applications Java CLI

Dans une application d'interface de ligne de commande (CLI), la capture de Ctrl C peut s'avérer inestimable. Cette combinaison de touches, qui termine généralement le processus, peut être redirigée pour exécuter des actions personnalisées. La réalisation de cette fonctionnalité de manière cohérente sur toutes les plates-formes constitue un défi.

Solution multiplateforme

Pour Unix et Solaris, vous pouvez utiliser la classe SignalHandler du package sun.misc. Cette classe permet l'interception du signal SIGINT généré par Ctrl C.

import sun.misc.Signal;
import sun.misc.SignalHandler;

class CtrlCHandler implements SignalHandler {
    public void handle(Signal signal) {
        // Your custom Ctrl+C handling logic
    }
}

Signal.handle(new Signal("INT"), new CtrlCHandler());

Pour Windows, une approche similaire peut être utilisée en utilisant la classe Runtime et un hook d'arrêt.

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        // Your custom Ctrl+C handling logic
    }
});

Cependant, cette technique ne permet qu'une interception intermédiaire avant l'arrêt de la JVM.

Approche alternative

Au lieu d'utiliser les méthodes mentionnées ci-dessus, envisagez d'utiliser une méthode différente pour lire les caractères à partir d'une entrée standard, telle que System.in.read(). Cette approche offre un contrôle direct sur la gestion des entrées, y compris la possibilité d'intercepter Ctrl C.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn