Maison  >  Article  >  Java  >  Comment empêcher Ctrl C de mettre fin à votre application Java CLI ?

Comment empêcher Ctrl C de mettre fin à votre application Java CLI ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 08:41:28688parcourir

How to Prevent Ctrl C from Terminating Your Java CLI Application?

Interception de Ctrl C dans les applications CLI Java

Problème : Comment gérer les événements Ctrl C dans une application CLI Java pour empêcher l'arrêt du processus ?

Contexte : Le comportement par défaut de Ctrl C dans les applications CLI est de terminer le processus, mais pour certaines applications, il peut être nécessaire d'intercepter ce signal et d'exécuter des actions spécifiques à la place.

Solution :

Pour intercepter Ctrl C dans une application Java CLI multiplateforme, vous pouvez utiliser l'une des méthodes suivantes :

Runtime Shutdown Hook :

Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
        // Your shutdown code that handles Ctrl+C
    }
});

Cette méthode exécutera votre code lorsque la JVM s'arrêtera à la suite de Ctrl C. Cependant, elle peut ne pas fournir un contrôle complet sur la gestion du signal.

SignalHandler :

public class SignalHandler {

    public static void registerCtrlCHandler() {
        try {
            Signal.handle(new Signal("INT"), (s) -> {
                // Your Ctrl+C handling logic here
            });
        } catch (Exception e) {
            // Handle exception
        }
    }
}

À l'aide du SignalHandler du package sun.misc, vous pouvez intercepter le signal SIGINT, qui est déclenché par Ctrl C, et effectuer des actions personnalisées dans votre application. . Cela offre un contrôle plus granulaire sur la gestion du signal.

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