здравствуйте, есть код следующего вида:
//обработчик сигналов
void sig_usr(int signo)
{
if (signo == SIGKILL)
printf("signal SIGKILL\n");
else if (signo == SIGCHLD)
printf("signal SIGCHLD\n");
else
printf("signal %d\n", signo);
}
int main(int argc, char**argv) {
//устанавливаем обработчик
struct sigaction act;
memset(&act, 0, sizeof(act));
act.sa_handler = sig_usr;
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGKILL);
sigaddset(&set, SIGCHLD);
act.sa_mask = set;
sigaction(SIGKILL, &act, 0);
sigaction(SIGCHLD, &act, 0);
while(true) {
retval = ::poll(clients, max + 1, -1);
if(errno == EINTR) {
std::cout << "interrupt syscall and reload poll\n";
continue;
}
/*много всего*/
}
}