使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用。
alarm
alarm用在不需要经确定时的时候,返回之前剩余的秒数。
NAME
alarm - set an alarm clock for delivery of a signal
SYNOPSIS
#include <unistd.h>
unsigned int alarm(unsigned int seconds);
DESCRIPTION
alarm arranges for a SIGALRM signal to be delivered to the process in
seconds seconds.
If seconds is zero, no new alarm is scheduled.
In any event any previously set alarm is cancelled.
测试程序:
cat timer.c
2 #include <stdio.h>
3 #include <unistd.h>
4 #include <sys/time.h>
5 #include <signal.h>
6
7 void func()
8 {
9 printf("2 s reached.\n");
10 }
11
12 int main()
13 {
14 signal(SIGALRM,func);
15 alarm(2);
16 while(1);
17 return 0;
18 }