Игнорирование обработчиков сигналов после отправки сигнала USR2

0

У меня есть одна мысль. Я определяю свои собственные обработчики для таких сигналов.

    sig_11.sa_handler = &signal1_SIGILL;
    sig_11.sa_flags=SA_NODEFER;
   if (sigaction(SIGUSR2, &sig_12, NULL ) < 0) {
       perror ("sigaction");             
       return 1;
     }

Я создаю такие обработчики для разных сигналов. Но это не имеет большого значения.
Все выглядит и работает хорошо, пока я не посылаю сигнал USR2. Похоже, что это заставляет процесс игнорировать все остальные сигналы. Он не прерывает процесс, а просто игнорирует все остальные сигналы.
Это нормальное поведение?

Теги:
signals

1 ответ

0

Вы не инициализировали sa_mask и вы не сообщили нам, как sig_11 переменная sig_11 и что сделано в обработчике, но я подозреваю, что в sa_mask установлено неправильное значение, поэтому, по крайней мере, во время работы обработчика некоторые сигналы могут быть заблокирован. Обычно в конце обработчика все возвращается к норме.

По крайней мере, SIGKILL можно использовать, поскольку его нельзя заблокировать или поймать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню