Linux提供了函数setitimer可以完成定时或延时的功能,函数声明如下:
#include <sys/time.h>
int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);
参数说明:
which:表示类型
ITIMER_REAL:以系统真实的时间来计算,它送出SIGALRM信号。
ITIMER_VIRTUAL:以该进程在用户态下花费的时间来计算,它送出SIGVTALRM信号。
ITIMER_PROF:以该进程在用户态下和内核态下所费的时间来计算,它送出SIGPROF信号。
new_value和old_value均为itimerval结构体:
struct itimerval {
struct timeval it_interval; /* next value */
struct timeval it_value; /* current value */
};
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
new_value用于设置定时或延时,其工作方式为:先对it_value进行倒计时,当it_value为0时触发信号;然后如果it_interval有值,则将it_value赋值为it_i