Задать вопрос
Steindvart
@Steindvart

Как установить свой обработчик сигналов SIGUSR1 и SIGUSR2?

По-дефолту пользовательские сигналы SIGUSR1 и SIGUSR2 завершают процесс или поток. Как сделать так, чтобы установить им свой обработчик? Пытался читать на эту тему различные статьи, но так как я новичок в этой теме - перенести для своих нужд не получилось.

А нужда в следующем - есть ряд потоков-производителей (pthread), которые в цикле исполняют ряд инструкций и в конце каждой итерации ожидают сигнал (sigwait) SIGURS1 от главного потока-потребителя, и только после получения сигнала переходят к следующей итерации. Но из-за завершения по-дефолту они, следовательно, завершаются.

Т.е. тут нужен только сам факт получения этих сигналов для перехода к следующей итерации, а они завершают процесс.
  • Вопрос задан
  • 452 просмотра
Подписаться 1 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
Решения вопроса 1
man signal

#include <signal.h>
void sigprocess (int sign){
 /* process signal here */
}

...
int main(){
...
 signal (SIGUSR1, sigprocess);
...
}


P.S. если обработчик не нужен, можно
signal(SIGUSR1, SIG_IGN);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы