Прервать все запущенные сигналы в Python? - PullRequest
1 голос
/ 23 февраля 2010

Как мне прервать все запущенные сигналы в скрипте Python? Я хотел бы что-то вроде signal.interrupt_all().

Есть ли способ сделать это?

Спасибо

1 Ответ

1 голос
/ 24 февраля 2010

Что именно вы имеете в виду? Вы хотите временно игнорировать сигнал или полностью игнорировать некоторые виды сигналов?

Вообще говоря, вы не можете "пропустить" сигнал после его генерации. Вы либо устанавливаете его действие «игнорировать», либо блокируете сигнал, предотвращая его доставку, но вам нужно сделать это заранее .

В системах POSIX вы можете выбрать следующие варианты (см. Основные понятия сигнала ):

  • Игнорировать сигнал, установив его обработчик на SIG_IGN. Это также приведет к игнорированию ожидающих сигналов (см. Понятия сигналов: SIG_IGN ).
  • Блок сигнал с доставки. Сигнал останется в ожидании, но ваш процесс / поток не получит его (пока он не разблокирован). К сожалению, вы не можете блокировать сигналы в Python: см. Документацию для сигнального модуля .

Обратите внимание, что вы не можете прерывать обработчик сигнала (функция захвата сигнала); это не должно быть проблемой, так как ожидается, что обработчики сигналов вернутся быстро.

См. Также этот вопрос: Перехват сигналов в Python .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...