2010-07-29 12 views

Respuesta

9

Puede intentar y utilizar un shutdown hook para esto. De la documentación, el gancho se ejecutará en las siguientes circunstancias:

  • el programa sale normalmente
  • El VM se termina

Esto cubre su situación ^C, pero cubrirá dudosamente situaciones como la la máquina está desconectada (salvo algún tipo de hardware redundante en la máquina).

Here son algunas notas sobre el diseño.

crudo ejemplo:

Runtime.getRuntime().addShutdownHook(new Thread() { 
    @Override 
    public void run() { 
     System.out.println("System was shutdown"); 
    } 
}); 
+0

creo que va a funcionar con CTRL + C y 'SIGTERM' pero creo que hay otras maneras de matar el programa cuando ello no funcionarán –

+2

sistemas embebidos que he visto que podría realmente registrar un evento de pérdida de potencia. Necesita un condensador bastante grande y una rutina de servicio de interrupción bastante pequeña, pero se puede hacer. –

+2

Otra alternativa es registrar cierres exitosos y verificar al inicio que la última ejecución del programa se cerró con éxito. –

Cuestiones relacionadas