用setitimer函数和signal信号处理函数实现简单的timer的代码

真实计时器介绍,setitimer函数介绍  见点击打开链接

代码如下:

#include
#include
#include
#include
#include

void setTimer(int seconds)
{       
        struct itimerval new_val;
        new_val.it_value.tv_sec=seconds;
        new_val.it_value.tv_usec=0;
        new_val.it_interval.tv_sec=seconds;
        new_val.it_interval.tv_usec=0;
        
        int ret=setitimer(ITIMER_REAL,&new_val,NULL);
        if(ret==-1)
        {       
                perror("setTimer error\n");
                exit(-1);
        }
}
void handler(int sign)
{
time_t tt;
time(&tt);
srand(tt);
switch(rand()%3)
{
case 1: printf("i am 1\n");break;
case 2: printf("i am 2\n");break;
case 0: printf("i am 0\n");break;
}
}

int main(void)
{
        int seconds=3;
        setTimer(seconds);
        signal(SIGALRM,handler);
        while(1);
}
结果:

i am 1
i am 0
i am 0
i am 0
i am 1
i am 1
i am 2




你可能感兴趣的:(用setitimer函数和signal信号处理函数实现简单的timer的代码)