2010-07-29 15 views

risposta

9

Per questo è possibile provare e utilizzare uno shutdown hook. Dalla documentazione, il gancio verrà eseguito nei seguenti casi:

  • il programma esce normalmente
  • La VM viene terminata

Questo copre la vostra situazione ^C, ma dubbioso coprire situazioni come la macchina scollegata (salvo qualche tipo di hardware ridondante sulla macchina).

Here sono alcune note sul design.

esempio Crude:

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

Penso che sarà eseguito su CTRL + C e 'SIGTERM' ma penso che ci sono altri modi per uccidere il programma in cui questo voleva correre –

+2

sistemi embedded che ho visto che potrebbe registra effettivamente un evento di perdita di potenza. Serve un condensatore piuttosto grande e una routine di servizio di interruzione piuttosto piccola, ma può essere fatto. –

+2

Un'altra alternativa è registrare gli arresti riusciti e verificare all'avvio che l'ultima esecuzione del programma sia stata arrestata correttamente. –

Problemi correlati