分析:实现定时器,通过 itimerval 结构体以及函数 setitimer() 产生的信号,随之调用signal信号处理函数来处理产生的定时信号,从而实现定时器。
包含头文件
#include <sys/time.h>
首先来看 setitimer() 函数:
int setitimer(__itimer_which_t,const struct itimerval *__restrict __new,struct itimerval *__restrict_old);
__timer_which_t 三种类型:
ITIMER_REAL //数值为0,计时器的值实时递减,发送的信号是SIGALRM。
ITIMER_VIRTUAL //数值为1,进程执行时递减计时器的值,发送的信号是SIGVTALRM。
ITIMER_PROF //数值为2,进程和系统执行时都递减计时器的值,发送的信号是SIGPROF。
此时需要用到signal函数来捕获信号并进行相关处理:
signal(SIGALRM,handler);
struct itimerval结构体:
struct itimerval
{
//设定定时器定时的时间
struct timval it_interval;
//设定定时器开始启动的时间
struct timval it_value;
};
struct timval
{
//秒
__time_t tv_sec;
//微秒
__seconds_t tv_usec;
};
setitimer函数返回值:</