int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);
参数解释:
-
which参数
ITIMER_REAL自然定时法则,就和alarm中的一样;对应的信号为(SIGALRM) ITIMER_VIRTUAL只计算用户区代码运行的时间;对应的信号为(SIGVTALRM) ITIMER_FROF计算用户区加上内核区的代码运行时间,不包含损耗时间;对应的信号为(SIGPROF)
-
itimerval参数
struct itimerval {
struct timeval it_interval; /* Interval for periodic timer */
struct timeval it_value; /* Time until next expiration */
};
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
-
old_val参数
old_val是一个传出参数,传出的是上一个定时器的信息
#include<stdio.h>
#include<sys/time.h>
#include<unistd.h>
int main()
{
struct itimerval timer;
timer.it_interval.tv_sec=5;
timer.it_interval.tv_usec=0;
timer.it_value.tv_sec=6;
timer.it_value.tv_usec=0;
setitimer(ITIMER_REAL,&timer,NULL);
while(1)
{
printf("hello world!\n");
sleep(1);
}
return 0;
}
当然,it_interval参数设置来没有用,因为五秒过后内核就会向进程发送SIGALRM信号,使进程终止了