Блокировка сна системы и обработка событий сна
- Функция: system-sleep-block-sleep &optional why allow-display-sleep
-
Эта функция блокирует переход системы в состояние сна при простое.
Она возвращает токен, который необходимо передать в
system-sleep-unblock-sleep, чтобы снять эту блокировку (одновременно могут действовать другие блокировки сна для других целей). В противном случае, если заблокировать сон не удалось, она возвращаетnil.why — строка, которая, если она не-
nil, используется для идентификации блокировки сна в списках блокировок, доступных для просмотра в системе. По умолчанию используется ‘Emacs’.Если allow-display-sleep не-
nil, разрешить дисплею переходить в спящий режим. По умолчанию дисплей остаётся активным.Обратите внимание, что при завершении процесса Emacs блокировки снимаются на всех платформах.
- Функция: system-sleep-unblock-sleep token
Эта функция снимает блокировку сна, связанную с token. При успешном выполнении она возвращает не-
nil, в противном случае —nil.
- Макрос: with-system-sleep-block (&optional why allow-display-sleep) body…
Этот вспомогательный макрос позволяет обернуть формы в body блокировкой сна, которая будет снята после завершения body. Это гарантирует, что система не перейдёт в спящий режим во время выполнения body. Аргументы имеют то же значение, что и в
system-sleep-block-sleepвыше.
- Функция: system-sleep-sleep-blocked-p
Эта функция-предикат возвращает не-
nil, если активны какие-либо блокировкиsystem-sleep, в противном случае она возвращаетnil.
- Функция: system-sleep-unblock-all-sleep-blocks
Эта функция снимает все активные блокировки сна. Маловероятно, что вам понадобится вызывать эту функцию.
- Пользовательский параметр: system-sleep-event-functions
-
Когда система собирается перейти в спящий режим или после пробуждения, каждая функция из этого нестандартного хука вызывается с одним аргументом — event, событием сна. Его состояние можно получить с помощью ‘
(sleep-event-state event)’. Состояние будет одним из символовpre-sleepилиpost-wake.Обрабатывать события
pre-sleepследует как можно быстрее и не запрашивать ввод от пользователя. Системы часто предоставляют очень короткий интервал для обработки перед переходом в спящий режим — обычно от 2 до 5 секунд. Система может перейти в спящий режим, даже если обработка не завершена, поэтому постарайтесь выполнить как можно меньше действий. Например, ваша функция может закрыть активные соединения или последовательные порты.Обработка событий
post-wakeпредоставляет больше свободы. Например, используйте их для восстановления соединений.Примечание: ваш код и вызываемые им функции не должны генерировать сигналы, иначе выполнение всех хуков будет прекращено. Код можно обернуть в блок
condition-case(см. раздел Ошибки).
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/System-Sleep.html