Искам да хвана сигнал, да задам глобален сигнал, който казва, че сигналът е уловен, и след това да се върна към основния си цикъл след думите. Ето моя код.
int main(int mainargc, char **mainargv)
{
.
.
.
sig_handler.sa_handler = sigint_handler;
sigemptyset(&sig_handler.sa_mask);
sig_handler.sa_flags = 0;
sigaction(SIGINT, &sig_handler, NULL);
.
.
.
while(1)
{
//main loop
}
}
void sigint_handler(int signal)
{
int saved_error = errno;
g_sigint_happened = 1;
//TODO -- send sigint to children
errno = saved_error;
}
Проблемът ми е, че моят манипулатор на сигнали е извикан, но програмата ми все още се прекратява. Не съм сигурен как да кажа на манипулатора на сигнали да се върне към main.