Signals
void * sigwaiter(void * data)
{
int sig;
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGHUP);
sigaddset(&set, SIGINT);
while (sigwait(&set, &sig) == 0) {
switch(sig) {
case SIGHUP:
...
break;
case SIGINT:
...
break;
default:
break;
}
}
}
int main()
{
sigset_t set;
pthread_t thread;
sigfillset(&set);
pthread_sigmask(SIG_BLOCK, &set, NULL);
pthread_create(&thread, NULL, sigwaiter, NULL);
...
}