间隔定时器

系统调用 setitime(r) 创建一个 间隔定时器(interval timer),

该定时器会在未来某个时间点到期,并于此后(可选择地)每隔一段时间到期一次。

#include <sys/time . h>
int setitimer(int which, const struct itimerval *new_ value, struct itimerval *old_ value);

// Returns 0 on success, or-1 on error

which指定值,只能选择其一:

其中的对应的结构itimerval :

struct itimerval{
	struct timeval it_interval;    // 定时器重复的间隔
	struct timeval it_value;   // 初始的间隔时间
}

struct timeval {
    time_t      tv_sec;  /* Seconds */
    suseconds_t tv_usec; /* Microseconds */
};

两种间隔:初始间隔it_value 和 重复间隔 it_interval

举个例子,就像 医生给你一些药丸并告诉你:“过一个小时吃第一粒,然后每隔4个小时吃一粒。”

<aside> 📢 定时器会从初始值(it_value)倒计时一直到 0 为止。递减为 0 时,会将相应信号发送给进程,随后,如果时间间隔值(it_interval)非 0,那么会再次将 it_value 加载至定时器,重新开始向 0 倒计时

</aside>