/* FILE: pausekillSigset.c */ #include #include int ntimes = 0; void handler(int signo) { printf ("Processo %d ricevuto #%d volte il segnale %d\n", getpid(), ++ntimes, signo); } main () { int pid, ppid; sigset (SIGUSR1, handler); if ((pid = fork()) < 0) /* fork fallita */ exit(1); else if (pid == 0) /* figlio */ { /* l'aggancio al segnale viene ereditato */ ppid = getppid(); /* PID del padre */ for (;;) /* ciclo infinito */ { printf("FIGLIO %d\n", getpid()); sleep(1); kill(ppid, SIGUSR1); pause(); } } else /* padre */ { for(;;) /* ciclo infinito */ { printf("PADRE %d\n", getpid()); pause(); sleep(1); kill(pid, SIGUSR1); } } }