Существуют ли сигналы приостановки\возобновления в Linux?

Мое приложение должно реагировать на режим гибернации, чтобы оно могло выполнять некоторые действия при приостановке и другие действия при возобновлении работы. Я нашел несколько специфичных для дистрибутива способов добиться этого (Upower + DBus), но не нашел ничего универсального. Есть ли способ сделать это?

Спасибо!


person ixSci    schedule 26.05.2011    source источник
comment
Это может быть что-то mjmwired.net/kernel/Documentation/power/ замораживание задач.txt   -  person Kristofer    schedule 26.05.2011
comment
@Kristofer, спасибо за подсказку, я нашел более подходящий: mjmwired.net/kernel/ Documentation/power/notifiers.txt Но похоже, что это возможно только в режиме ядра, а мне нужно получать уведомления в пользовательском пространстве без написания каких-либо модулей ядра.   -  person ixSci    schedule 28.05.2011


Ответы (2)


Простым решением этого является использование самодельной трубы. Откройте канал и периодически записывайте в него временные метки. select в этом канале, чтобы прочитать метки времени и сравнить их с текущим временем. Когда есть большой разрыв, это означает, что вы только что проснулись от приостановки системы или режима гибернации.

Наоборот, времени, когда крышка закрыта и щелкает переключатель, не так много.

Если вам действительно нужно действовать при приостановке, вам нужно будет установить перехватчики энергосбережения, подобные этому https://help.ubuntu.com/community/PowerManagement/ReducedPower в pm-utils. Это может быть так же просто, как

kill -1 `cat mypid` ; sleep 1

Затем ваш процесс перехватит SIGHUP и сделает все необходимое для подготовки к приостановке. Сон задерживает процесс достаточно долго, чтобы ваша программа могла отреагировать на сигнал.

person Michael Dillon    schedule 04.08.2011
comment
Интересно, применимо ли это по сей день - person matanster; 29.09.2020

Я полагаю, что вы ищете сигналы SIGSTOP и SIGCONT. Вы можете отправить их в запущенный процесс следующим образом:

kill -STOP pid
sleep 60
kill -CONT pid
person macetw    schedule 04.03.2019