使用setitimer定时器完成信号的触发,我们这里已10s为例,当到了10s以后,开始完成信号的内容.
程序如下:
void
signalHandler(
int signo)
{
switch (signo){
case SIGALRM:
cout<<"10s信号时间到"<<endl;
break;
}
}
1.设置定时器
void set_time()
{
struct
itimerval new_value, old_value;
signal(SIGALRM, signalHandler);
//struct itimerval new_value, old_value;
new_value.
it_value.
tv_sec =
10;
new_value.
it_value.
tv_usec =
0;
new_value.
it_interval.
tv_sec =
10;
new_value.
it_interval.
tv_usec =
0;
setitimer(ITIMER_REAL, &new_value, &old_value);
}
2.取消定时器
void
uninit_time()
{
struct
itimerval value;
value.
it_value.
tv_sec =
10;
value.
it_value.
tv_usec =
0;
value.
it_interval = value.
it_value;
setitimer(ITIMER_REAL, &value,
NULL);
}
将uninit_time()函数放到你需要计时的位置即可.当程序没有执行到此函数的时候,10s时间到,会执行信号里的函数.