выполнить
мой код
jmp_buf a;
void sig_handler(int signum) {
if(signum == SIGINT) exit(0);
printf("In the handler\n");
sleep(2);
alarm(3);
longjmp(a,1);
}
int main(int argc, char *argv[]) {
int j=0;
struct sigaction sa;
memset(&sa, 0, sizeof(struct sigaction));
sa.sa_handler = sig_handler;
sigfillset(&sa.sa_mask);
sa.sa_flags = 0;
sigaction(SIGALRM, &sa, NULL);
alarm(2);
j = setjmp(a);
while(1){
printf("In the main\n");
pause();
}
return 0;
}
Я думал, что результат этого кода
В основном . В обработчике. В основном. В обработчике. В основном. В обработчике. В основном. В обработчике. . . .
но это не сработало. В обработчике не была установлена функция будильника. когда удаляю setjmp, longjmp, работает хорошо. Но я не хочу их удалять. Влияет ли setjmp на настройку функции будильника? Как решить эту проблему.