インターバルタイマーを使って一定時間間隔でシグナルを発生。
#include < sys/time.h > #include < signal.h > #include < unistd.h > #include < stdio.h > #include < string.h > static void interval() { write(2, ".", 1); } int main() { struct itimerval val; struct sigaction act; sigset_t set; memset(&act, 0, sizeof act); act.sa_handler = interval; if (sigaction(SIGALRM, &act, NULL)< 0){ perror("sigaction"); return 1; } val.it_interval.tv_sec = 1; val.it_interval.tv_usec = 0; val.it_value = val.it_interval; if (setitimer(ITIMER_REAL, & val, NULL) < 0){ perror("setitimer"); return 1; } if (getitimer(ITIMER_REAL, &val) < 0){ perror("getitimer"); return 1; } printf( "it_interval = %ld.%ld\n" "it_value = %ld.%ld\n", val.it_interval.tv_sec, val.it_interval.tv_usec, val.it_value.tv_sec, val.it_value.tv_usec); sigemptyset(&set); for(;;){ sigsuspend(&set); } return 0; }