Python 3.5+Linux · macOSsignalпонятие
signal.Sigmasks
маски и ожидание
Перечисление IntEnum режимов pthread_sigmask: SIG_BLOCK, SIG_UNBLOCK и SIG_SETMASK. Только Unix (Linux, macOS).
Синтаксис
signal.pthread_sigmask(signal.SIG_BLOCK, {signal.SIGUSR1})
Разница режимов — главная ловушка: SIG_BLOCK добавляет сигналы к маске, SIG_UNBLOCK убирает, а SIG_SETMASK заменяет её целиком — и молча разблокирует всё, что не перечислено. Для восстановления прежней маски правильно SIG_SETMASK со значением, которое вернул предыдущий вызов. На Windows этого перечисления нет — AttributeError.
Примеры
import signal
print([m.name for m in signal.Sigmasks]) # → ['SIG_BLOCK', 'SIG_UNBLOCK', 'SIG_SETMASK']
old = signal.pthread_sigmask(signal.SIG_BLOCK, {signal.SIGUSR1})
print(signal.SIGUSR1 in signal.pthread_sigmask(signal.SIG_BLOCK, [])) # → True
signal.pthread_sigmask(signal.SIG_SETMASK, old) # вернуть маску целиком
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности