Я пытаюсь написать многопоточную программу, один поток (переменный поток которой ниже) отвечает за любые асинхронные сигналы, которые могут быть установлены для этого процесса.
Я сталкиваюсь с потоком, использующим sigwait () но не реагирует ни на какие сигналы, отправленные на обработку. (как SIGUSR1 ниже).
static void * signal_thread(void *arg = nullptr)
{
int sig = -1;
sigset_t sigset;
sigfillset(&sigset);
pthread_sigmask(SIG_BLOCK, &sigset, NULL);
while(1)
{
int s = sigwait(&sigset, &sig);
if(s == 0)
printf("SIG %d recieved!...\n", sig);
usleep(20);
}
}
int main()
{
sigset_t signalset;
pthread_t thread;
pthread_create(&thread, NULL, &signal_thread, nullptr);
sigfillset(&signalset);
pthread_sigmask(SIG_BLOCK, &signalset, NULL);
while(1)
{
raise(SIGUSR1);
usleep(20);
}
}