Pregunta

Tengo una versión de línea de comando de una aplicación Eclipse RCP GUI que puede utilizar muchos de los mismos complementos (esto es útil para las pruebas de integración). Una cosa que hace es conectarse a un servidor, solicitar cosas e iniciar un bucle interactivo. Para salir, el usuario de la aplicación GUI puede detener el ciclo y cerrar la aplicación.

En mi aplicación de línea de comando, la forma más obvia de " cerrar " la aplicación es CTRL-C! Sin embargo, esto deja '' sesión crud '' en el servidor que se puede limpiar si puedo capturar la señal de salida. Con el tiempo, el tiempo de espera se agota o lo que sea, pero sería bueno si pudiera solucionarlo también limpiamente.

Entonces, ¿cuáles son mis opciones para capturar una señal de apagado de una aplicación Eclipse RCP? Esto es específico de Linux, si eso ayuda. Pero no cargo ningún complemento SWT. Mi " lazo principal " Plugin.stop () no se llama cuando controlo la línea de comando. ¡Algo como KeyboardInterrupt de Python sería un as!

¿Fue útil?

Solución

Encontré un enfoque alternativo: agregue un gancho de apagado que se ejecuta cuando llega el final ...

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

Otros consejos

Mira la trap de bash integrada. La señal para CTRL-C es SIGINT, pero es posible que también desee atrapar SIGTERM y SIGHUP.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top