LINUX.ORG.RU

Маска обработчика сигнала


0

1

Правильно я понимаю, что маска обработчика блокирует соответствующие в ней сигналы?

sa_mask specifies a mask of signals which should be blocked (i.e.,
       added to the signal mask of the thread in which the signal handler is
       invoked) during execution of the signal handler.  In addition, the
       signal which triggered the handler will be blocked, unless the
       SA_NODEFER flag is used.

Да, на время выполнения обработчика.

mky ★★★★★ ()
Ответ на: комментарий от mky

int sigprocmask(int what, sigset_t *set, sigset_t *oldest); Не могли бы сказать, в чем разница между функцией выше(блокирует соответствующие сигналы) и sa_mask?

iwsyhgia ()
Ответ на: комментарий от iwsyhgia

В чём разница между функцией и переменной типа sigset_t ? :-)

sigset_t set определяет маску сигналов при нормальном выполнении программы, а sigset_t sa_mask при выполнении обработчика сигнала.

Обычная практика выставлять sigfillset(&sa_mask), чтобы не прерывать обработчик сигнала другим сигналом. А на время обработки флагов, выставляемых/читаемых из обработчика сигналов делать sigfillset(&set), а после sigemptyset(&set).

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.