Есть ли сигналы приостановки \ возобновления в Linux? - PullRequest
6 голосов
/ 26 мая 2011

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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

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

Что касается обратного, не так много времени, когда крышка закрывается, и она нажимает на переключатель.

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

kill -1 `cat mypid` ; sleep 1

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

0 голосов
/ 05 марта 2019

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

kill -STOP pid
sleep 60
kill -CONT pid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...