2009-03-13 6 views
1

J'ai une version en ligne de commande d'une application Eclipse RCP GUI qui peut utiliser un grand nombre des mêmes plugins (c'est pratique pour les tests d'intégration). Une chose est qu'il se connecte à un serveur, demande des choses et démarre une boucle interactive. Pour quitter, l'utilisateur de l'application GUI peut arrêter la boucle et fermer l'application.Capture du signal d'arrêt dans l'application Eclipse RCP

Dans mon application de ligne de commande, la façon la plus évidente 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 expirer ou n'importe quoi d'autre, mais ce serait bien si je pouvais le régler proprement aussi. Alors, quelles sont mes options pour capturer un signal kill à partir d'une application Eclipse RCP? C'est spécifique à Linux, si cela peut vous aider. Mais je ne charge aucun plugin SWT. Ma "boucle principale" Plugin.stop() n'est pas appelée quand je ctrl-c la ligne de commande. Quelque chose comme KeyboardInterrupt de Python serait un as!

Répondre

3

je trouve une autre approche - ajouter un crochet d'arrêt qui est exécuté lorsque la fin arrive ...

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

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

Questions connexes