#include <stdio.h> // for printf() #include <unistd.h> // for pause() #include <signal.h> // for signal() #include <string.h> // for memset() #include <sys/time.h> // struct itimeral. setitimer() void printMsg(int); int main() { printf("in main\n"); // Get system call result to determine successful or failed int res = 0; // Register printMsg to SIGALRM signal(SIGALRM, printMsg); struct itimerval tick; // Initialize struct memset(&tick, 0, sizeof(tick)); // Timeout to run function first time tick.it_value.tv_sec = 0; // sec tick.it_value.tv_usec = 10000; // micro sec. // Interval time to run function tick.it_interval.tv_sec = 0; tick.it_interval.tv_usec = 10000; // Set timer, ITIMER_REAL : real-time to decrease timer, // send SIGALRM when timeout res = setitimer(ITIMER_REAL, &tick, NULL); if (res) { printf("Set timer failed!!/n"); } // Always sleep to catch SIGALRM signal while(1) { pause(); } return 0; } void printMsg(int num) { static int num1 = 0; printf("%s, num1: %d\n","Hello World!! num ", ++num1); }
http://www.cnblogs.com/anywei/archive/2011/11/28/setitimer.html