/* FILE: psignalConCount.c */ #include #include #include void catchint (int); main () { int i; signal (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; signal(SIGINT, SIG_IGN); /* 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("new.log", O_WRONLY); lseek(fd, 0L, 2); write(fd, s, strlen(s)); /* non si prevedono azioni di terminazione: ritorno al segnalato, dopo aver ripristinato la catch function */ signal (SIGINT, catchint); }