Steindvart
@Steindvart

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

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

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

Т.е. тут нужен только сам факт получения этих сигналов для перехода к следующей итерации, а они завершают процесс.
  • Вопрос задан
  • 400 просмотров
Решения вопроса 1
man signal

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

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


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

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

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