2015-10-01 2 views
2

Пожалуйста, смотрите следующий питона код:
Как обрабатывать несколько одинаковых разблокированных сигналов в Python?

signal.pthread_sigmask(signal.SIG_BLOCK, range(1, signal.NSIG)) #block signals 
time.sleep(60) #waiting 60 seconds 
pending = signal.sigpending() #check how much signals in pending state 

Когда приложение сна я посылаю, например, пять SIGUSR1 сигналов, но я получил только один сигнал SIGUSR1 в ожидании.
Могу ли я получать все сигналы SIGUSR1, которые были отправлены?

+1

Большинство сигналов не помещают очередь в несколько экземпляров - они просто ожидают или нет. Если вам нужно ставить в очередь несколько экземпляров чего-то, вам потребуется более общее событие или рамки доставки сообщений. – twalberg

+0

twalberg, спасибо! –

ответ

2

В модуле Python через Signal нет очереди на несколько экземпляров сигнала одного типа. Когда ваше приложение будет сна, вы получите все сигналы, которые были отправлены, но после этого вы можете обнаружить только один последний сигнал.

+0

Макс, спасибо! Теперь ясно. –