概述
alarm(time);执行之后告诉内核,让内核在time秒时间之后向该进程发送一个定时信号,然后该进程捕获该信号并处理;
pause函数的作用就是让当前进程暂停运行,交出CPU给其他进程去执行。当当前进程进入pause状态后当前进程会表现为“卡住、阻塞住”,要退出pause状态当前进程需要被信号唤醒。
正文
函数alarm
函数原型
unsigned int alarm(unsigned int seconds);
参数
参数seconds表示设置的秒数,
返回值
第一次调用alarm返回值为0。
如果在seconds秒内再次调用了alarm函数设置了新的闹钟,则后面定时器的设置将覆盖前面的设置,即之前设置的秒数被新的闹钟时间取代;当参数seconds为0时,之前设置的定时器闹钟将被取消,并将剩下的时间返回。
测试代码
void func(int sign)
{
if(sign == SIGALRM)
printf("func work\r\n");
return ;
}
int main(int argc,char **argv)
{
unsigned int ret = -1;
signal(SIGALRM,func);/*把信号SIGALRM关联到func函数*/
ret = alarm(5);/*内核只帮一个进程维护一个alarm时钟*/
printf("ret = %d\r\n",ret);
sleep(1);
ret = alarm(2);
printf("ret = %d\r\n",ret);
pause();/*使调用进程挂起直至捕捉到一个信号*/
return 0;
}
/**********运行结果**************
ret = 0//第一次设置返回0
ret = 4//第二次设置返回上次设置的剩余值
func work
********************************/