/* FILE: psigset.c */ #include #include #include void catchint (int); main () { int i; sigset (SIGINT, catchint); /* aggancia il segnale */ for (;;) /* ciclo infinito */ for (i =0 ; i < 32000; i++) printf (" i vale %d\n", i); } void catchint (int signo) { int fd; char s[100] = "Segnale nro "; char s1[5]; char s2[] = " e count = "; char s3[] = "\n"; static int count = 0; /* NON si disabilita il segnale SIGINT */ sprintf(s1, "%d", signo); strcat(s, s1); strcat(s, s2); count++; sprintf(s1, "%d", count); strcat(s, s1); strcat(s, s3); fd = open("sigset.log", O_WRONLY); lseek(fd, 0L, 2); write(fd, s, strlen(s)); /* non si prevedono azioni di terminazione: ritorno al segnalato, SENZA RIPRISTINARE la catch function */ }