使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用 Linux
内部的三个定时器;另一个是用 sleep
或 usleep
函数让进程睡眠一段时间;其实,还有一个方法,那就是用 gettimeofday
、difftime
等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用。
1、alarm
如果不要求很精确的话,用 alarm()
和 signal()
就够了
unsigned int alarm(unsigned int seconds)
专门为SIGALRM
信号而设,在指定的时间seconds
秒后,将向进程本身发送SIGALRM
信号,又称为闹钟时间。进程调用alarm
后,任何以前的alarm()
调用都将无效。如果参数seconds
为零,那么进程内将不再包含任何闹钟时间。如果调用alarm()
前,进程中已经设置了闹钟时间,则返回上一个闹钟时间的剩余时间,否则返回0
。
示例:
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void sigalrm_fn(int sig)