Salve a tutti, quello che non funziona in questo giochino è che non termina una volta catturato il segnale ma esegue solo la printf all'interno dell'handler. Dove sbaglio?
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
void gestore(int segnale);
int main(int argc, char * argv[]){
int random, answer;
srand(getpid());
random = rand () % atoi(argv[1])+1;
printf("Write a number: ");
alarm(3);
if(signal(SIGALRM, gestore))
return 0;
scanf("%d", &answer);
while(answer != random){
if(answer > random)
printf("higher\n");
else if(answer < random)
printf("lower\n");
printf("Write a number: ");
scanf("%d", &answer);
}
printf("guessed\n");
}
void gestore(int segnale){
signal(segnale, SIG_IGN);
printf("off time!");
signal(segnale, gestore);
}