Помогите решить проблему, плз!
Есть демон, который запускает некоторый набор функций в отдельных дочерних процессах и потом следит за состоянием каждого из них опрашивая по сигналу SIGALRM при помощи waitpid каждого потомка. Если потомок завершился, сервер перезапускает его функцию в новом дочернем процессе.
Все дочерние процессы однотипны и совершают некоторые действия по таймеру, каждый раз переустанавливая таймер на очередной вызов: void func(int sig) { if ( sig == SIGUSR2 ) exit(0); /* некое действие */ ....
signal(SIGALRM,func); alarm(alarm_time); }
все бы хорошо, но если один из дочерних процессов вываливается а потом перезапускается сновным процессом демона, то сигнал SIGALRM он больше получить не может, то-ли signal() не срабатывает то-ли таймер в alarm() не устанавливается :-( не пойму
Что не так?