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Сообщить о неточности