[Linux信号]使用setitimer函数进行精确定时
#include<signal.h>#include<time.h>#include<sys/time.h>#include<unistd.h>#include<stdio.h>#include<stdlib.h>//这是对信号的处理函数staticvoidsignalDeal(intsigno){structtimevaltp;structtm*tm;gettimeofday(&tp,NULL);//获得系统当前时间(秒和微秒)tm=localtime(&tp.tv_sec);//获得当地目前时间和日期printf("sec=%ld\t",tp.tv_sec);//打印从UNIX纪元开始到现在的秒数printf("usec=%ld\n",tp.tv_usec);//打印微秒printf("%d-%d-%d%d:%d:%d\n",tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec);/*打印当地目前时间和日期*/}//时间初始化函数staticvoidInitTime(inttv_sec,inttv_usec){structitimervalvalue;//定义时间参数结构体valuesignal(SIGALRM,signalDeal);//注册信号SIGALRM和信号处理函数value.it_value.tv_sec=tv_sec;//秒value.it_value.tv_usec=tv_usec;//微秒value.it_interval.tv_sec=tv_sec;value.it_interval.tv_usec=tv_usec;setitimer(ITIMER_REAL,&value,NULL);//setitimer发送信号,定时类型为ITIMER_REAL}//主函数intmain(intargc,char*argv[]){InitTime(1,0);//每隔1秒打印一次while(1){}exit(0);}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。