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.
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.
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!