Linux 定时器应用示例(修正版)
1.运行果
2.程序
#include <stdio.h>
#include <signal.h>
#include <sys/time.h>
#include <string.h> // For memsetint count = 0;void timer_handler(int sig) {printf("timer_handler: signal=%d, count=%d\n", sig, ++count);if(count >= 8) {printf("cancel timer\n");// Zero out the timer to cancel itstruct itimerval cancel_timer;memset(&cancel_timer, 0, sizeof(cancel_timer));setitimer(ITIMER_VIRTUAL, &cancel_timer, NULL);}
}int main() {struct itimerval timer;// Set up signal handler for SIGVTALRMsignal(SIGVTALRM, timer_handler);// Configure timer to fire every 1 second (initial + interval)timer.it_value.tv_sec = 1; // First expiration after 1 sectimer.it_value.tv_usec = 0;timer.it_interval.tv_sec = 1; // Subsequent intervals of 1 sectimer.it_interval.tv_usec = 0;setitimer(ITIMER_VIRTUAL, &timer, NULL);printf("looping: enter Control-C to terminate\n");printf("Hello World!\n-----------------------------------\n");while(1); // Infinite loop to keep the program running
}