#include #include #include int alarm_seen = 0, user1_seen = 0; void alarm_handler( int sig) { alarm_seen = 1; } void user1_handler( int sig) { user1_seen = 1; } main(int argc, char * argv[]) { int count = 0, idle = 0, period = 10; signal(SIGALRM, alarm_handler); signal(SIGUSR1, user1_handler); alarm(period); while (!alarm_seen) { count++; kill(getpid(), SIGUSR1); while (!user1_seen) {idle++;} user1_seen = 0; } printf("Handled %d signals in %d seconds, idle %d\n", count, period, idle); }