每个进程里可以使用一个定时器。
- 用alarm函数实现定时器。
alarm函数说明:
alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟 会被取消,并将剩下的时间返回。
返回值: 返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。
一个简单的例子:
2. 用setitimer
setitimer函数说明:
函数原型:int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
参数:第一个参数which指定定时器类型(下面三种之一);第二个参数是结构itimerval的一个实例;第三个参数可不做处理。
setitimer支持定时器类型
ITIMER_REAL : 以系统真实的时间来计算,它送出SIGALRM信号。
ITIMER_VIRTUAL : -以该进程在用户态下花费的时间来计算,它送出SIGVTALRM信号。
ITIMER_PROF : 以该进程在用户态下和内核态下所费的时间来计算,它送出SIGPROF信号。
struct itimerval {
struct timeval it_interval; /* next value */
struct timeval it_value; /* current value */
};
it_value设置本次定时的时间,it_interval设置以后定时的时间。
下面是关于setitimer调用的一个简单示范: