Linux提供了函数setitimer可以完成定时或延时的功能,函数声明如下:
- #include
- 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