Доброго времени суток!
Пишу класс для демона, в функционал которого входит обработка различных сигналов, в частности SIGUSR1. Когда посылаю kill 10 PID
, то демон штатно завершается, вместо того, чтобы этот сигнал обработать.
Вот кусок кода, ответственный за обработку этого сигнала:
for (;;)
{
// ждем указанных сообщений
sigwait(&sigset, &signo);
WriteLog("%s [MONITOR] Received signal: %d %d\n", getTime(), signo, SIGUSR1);//для проверки
// если то сообщение обновления конфига
if (signo == SIGUSR1)
{
// обновим конфиг
status = ReloadConfig();
if (status == 0)
{
WriteLog("%s [DAEMON] Reload config failed\n", getTime());
}
else
{
WriteLog("%s [DAEMON] Reload config OK\n", getTime());
}
}
else // если какой-либо другой сигнал, то выйдем из цикла
{
break;
}
}
В логе при этом следующий вывод: 17:58:42 [MONITOR] Received signal: 15 10
Как так получается, что я посылаю 10 сигнал, а демон принимает 15?