Контекст
Я разрабатываю сервис для macOS, который работает в фоновом режиме и периодически выполняет определенные задачи. Служба автоматически перезапускается launchd
при сбое или при автоматическом обновлении.
Я заметил, что когда машина спит, она по-прежнему будет выполнять программы в течение 1 или 2 минут в час.
Цель
Моя цель — прерывать выполнение этих задач всякий раз, когда хост находится в состоянии сна. Для этого я обрабатываю уведомления о сне и пробуждении, которые система отправляет приложению (Apple Docs: регистрация и отмена регистрации для уведомлений о переходе в спящий режим и пробуждения).
Проблема
Проблема, которую я обнаружил, заключается в том, что если служба обновляется или перезапускается, когда система находится в спящем состоянии, служба запускается и предполагает, что состояние «бодрствует». Таким образом, он пытается запустить то, что не должен.
Мне интересно, есть ли способ запросить систему, находится ли она в состоянии «сна» или «бодрствует».