Python 3.3+Linux · macOSsignalфункция
signal.pthread_sigmask()
маски и ожидание
Читает и меняет маску заблокированных сигналов текущего потока; возвращает прежнюю маску. Только Unix (Linux, macOS).
Синтаксис
old_mask = signal.pthread_sigmask(how, mask)
Заблокированный сигнал не теряется, а ждёт: после разблокировки обработчик сработает сразу, но несколько одинаковых сигналов сольются в один. Маска — свойство потока, а не процесса, и новые потоки наследуют её от создателя: так блокируют сигналы во всех рабочих потоках. Прочитать маску, ничего не меняя, — pthread_sigmask(SIG_BLOCK, []). SIGKILL и SIGSTOP не блокируются.
Примеры
import signal
got = []
old = signal.signal(signal.SIGUSR1, lambda s, f: got.append(s))
signal.pthread_sigmask(signal.SIG_BLOCK, {signal.SIGUSR1})
signal.raise_signal(signal.SIGUSR1)
signal.raise_signal(signal.SIGUSR1)
print(len(got)) # → 0 — сигналы ждут
signal.pthread_sigmask(signal.SIG_UNBLOCK, {signal.SIGUSR1})
print(len(got)) # → 1 — два одинаковых слились в один
signal.signal(signal.SIGUSR1, old)
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности