Una soluzione semplice consiste nell'utilizzare un tubo automatico. Aprire una pipe e scrivere periodicamente timestamp ad essa. select
su questa pipe per leggere i timestamp e confrontarli con l'ora corrente. Quando c'è un grande divario, significa che ti sei appena svegliato dalla sospensione del sistema o dalla modalità di ibernazione.
Come per il contrario, non c'è molto tempo quando il coperchio è chiuso e gira l'interruttore.
Se è davvero necessario agire in modalità sospensione, è necessario impostare i ganci powersave come questo https://help.ubuntu.com/community/PowerManagement/ReducedPower in pm-utils. Potrebbe essere semplice come
kill -1 `cat mypid` ; sleep 1
Il vostro processo sarebbe quindi trappola SIGHUP e fare ciò che deve essere fatto per preparare la sospensione. Il sonno ritarda il processo abbastanza a lungo da consentire al programma di reagire al segnale.
fonte
2011-08-04 05:42:45
Questo potrebbe ape qualcosa http://www.mjmwired.net/kernel/Documentation/power/freezing-of-tasks.txt – Kristofer
@Kristofer, grazie per indizio che ho trovato più appropriata: http: // www. mjmwired.net/kernel/Documentation/power/notifiers.txt Ma sembra che sia possibile solo nella modalità kernel ma ho bisogno di essere notificato nello spazio utente senza scrivere alcun modulo del kernel – ixSci