Здравствуйте, у меня есть программа, которая требует дочерний процесс для изменения списка ссылок, который родительский процесс отслеживает. В основном в родительском процессе у меня есть обработчик сигнала, например ..
struct sigaction sa;
sa.sa_handler = someFunction;
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART;
if(sigaction(SIGUSR1, &sa, NULL) == -1){
printf("We have a problem, sigaction is not working.\n");
perror("\n");
exit(1);
}
Где sa_handler - модифицирующая функция. Затем у меня есть глобальный связанный список, который содержит родительский процесс, называется struct conectionClient. Функция, которую я использую для изменения списка ссылок, работает, но когда я вызываю обработчик сигнала, как в ...
if(!fork){
raise(SIGUSR1);
exit(0);
}
И я fork (), fork (), ... fork (), родительский процесс не запоминает предыдущие форки, как будто что-то сброшено, и список ссылок начинается заново. Я что-то упускаю?
Спасибо