Spec-Zone.ru › Elisp

Блокировка сна системы и обработка событий сна

Функция: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API