Maison  >  Article  >  Java  >  Comment gérer gracieusement les interruptions Ctrl C dans les applications CLI Java ?

Comment gérer gracieusement les interruptions Ctrl C dans les applications CLI Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 05:33:31769parcourir

How to Gracefully Handle Ctrl C Interrupts in CLI Java Applications?

Capture des interruptions Ctrl C dans les applications Java CLI

Dans les applications Java CLI, l'interception du signal Ctrl C (terminant généralement le processus) peut être crucial pour gérer les entrées des utilisateurs avec élégance. Cet article explique comment réaliser cette interception sur plusieurs plates-formes.

Solution multiplateforme

Pour intercepter les signaux Ctrl C de manière cohérente sur Linux, Solaris et Windows, la méthode recommandée L’approche utilise un SignalHandler. La classe sun.misc.SignalHandler fournit cette fonctionnalité. En implémentant SignalHandler#handle et en l'enregistrant pour le signal SIGINT, vous pouvez capturer l'interruption et exécuter du code personnalisé.

Implémentation

Voici un exemple de la façon d'utiliser un SignalHandler en Java :

<code class="java">import sun.misc.Signal;
import sun.misc.SignalHandler;

public class CtrlCHandler {

    public static void main(String[] args) {
        // Register a SignalHandler for SIGINT (Ctrl+C)
        Signal.handle(new Signal("INT"), new SignalHandler() {
            @Override
            public void handle(Signal signal) {
                // Custom shutdown code here
                System.out.println("Ctrl+C received, performing shutdown...");
                Runtime.getRuntime().exit(0);
            }
        });

        // Other application logic here...
    }
}</code>

Notez que cette méthode n'interceptera le signal qu'à titre intermédiaire avant l'arrêt complet de la JVM, elle peut donc ne pas convenir à tous les cas d'utilisation.

Alternative :

Si l'utilisation d'un SignalHandler n'est pas réalisable, envisagez d'utiliser la méthode Runtime.getRuntime().addShutdownHook. Cela vous permet d'enregistrer un thread qui sera exécuté lors de l'arrêt de la JVM. Dans ce fil de discussion, vous pouvez gérer l'interruption Ctrl C et effectuer toutes les procédures de nettoyage ou d'arrêt nécessaires.

<code class="java">Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        // Custom shutdown code here
        System.out.println("JVM shutting down...");
    }
});</code>

Ces méthodes fournissent des solutions flexibles pour intercepter les signaux Ctrl C dans les applications CLI Java, vous permettant de gérer les entrées utilisateur. gracieusement et effectuez des actions personnalisées avant la fin du processus.

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