#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <stdlib.h>
#include <signal.h>
static int count = 0;
static struct itimerval oldtv;
void set_timer()
{
struct itimerval itv;//结构体的定义在Timer.h
itv.it_interval.tv_sec = 1;
itv.it_interval.tv_usec = 0;
itv.it_value.tv_sec = 1;
itv.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &itv, &oldtv);//向内核注册一个timer信号
}
void signal_handler(int m)
{
count ++;
printf("%d\n", count);
}
int main()
{
/*内核收到setitemer时触发的信号,会激活SIGALRM
signal这个函数是信号量注册,只要收到SIGALRM就会调用signal_handler
*/
signal(SIGALRM, signal_handler);
set_timer();
while(count < 10000);
exit(0);
return 1;
}
Linux C++Timer(用信号量实现)
最新推荐文章于 2024-07-20 13:46:56 发布