Python Glossary English

Python 3.3+Linux · macOSsignalфункция

signal.sigwait()

маски и ожидание

Ждёт один из перечисленных сигналов, забирает его из очереди и возвращает номер; обработчик не вызывается. Только Unix (Linux, macOS).

Синтаксис

signum = signal.sigwait(sigset)

Работает надёжно, только если ожидаемые сигналы заранее заблокированы pthread_sigmask: иначе сигнал успеет уйти обработчику (или убить процесс) раньше, чем sigwait его увидит. Тайм-аута нет — для ожидания с пределом есть sigtimedwait (на macOS её нет). Классический приём — отдельный поток, который в цикле зовёт sigwait и обрабатывает сигналы синхронно.

Примеры

import signal
old = signal.pthread_sigmask(signal.SIG_BLOCK, {signal.SIGUSR1})  # сначала блок
signal.raise_signal(signal.SIGUSR1)
print(signal.sigwait({signal.SIGUSR1}).name)  # → SIGUSR1 — сразу, сигнал уже ждал
signal.pthread_sigmask(signal.SIG_SETMASK, old)

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности