Question

J'ai une version en ligne de commande d'une application d'interface graphique Eclipse RCP qui peut utiliser de nombreux plugins identiques (pratique pour les tests d'intégration). Une chose qu'il fait est de se connecter à un serveur, de demander des choses et de démarrer une boucle interactive. Pour quitter, l'utilisateur de l'application graphique peut arrêter la boucle et fermer l'application.

Dans mon application de ligne de commande, le moyen le plus évident de " fermer " l'application est CTRL-C! Toutefois, cela laisse "session crud". sur le serveur qui peut être nettoyé si je peux capturer le signal de sortie. Le crud finira par s’arrêter ou quoi que ce soit, mais ce serait bien si je pouvais régler tout aussi proprement.

Quelles sont mes options pour capturer un signal d’arrêt depuis une application Eclipse RCP? Ceci est spécifique à Linux, si cela aide. Mais je ne charge aucun plugin SWT. Ma "boucle principale" Plugin.stop () n'est pas appelé lorsque je ctrl-c la ligne de commande. Quelque chose comme KeyboardInterrupt de Python serait un as!

Était-ce utile?

La solution

J'ai trouvé une autre approche: ajouter un point d'arrêt à exécuter lorsque la fin arrive ...

    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run() {
            System.out.println("The end.");
        }
    });

Autres conseils

Regardez le trap intégré de bash. Le signal pour CTRL-C est SIGINT, mais vous pouvez également vouloir intercepter SIGTERM et SIGHUP.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top