linux C之alarm函数

alarm也称为闹钟函数alarm()用来设置信号SIGALRM在通过参数seconds指定的秒数后传送给目前的进程。若是参数seconds为0,则以前设置的闹钟会被取消,并将剩下的时间返回。要注意的是,一个进程只能有一个闹钟时间,若是在调用alarm以前已设置过闹钟时间,则任何之前的闹钟时间都被新值所代替
函数

所需头文件
  #include<unistd.h>
spa

函数原型
  unsigned int alarm(unsigned int seconds)
orm

函数参数
  seconds:指定秒数
进程

函数返回值
  成功:若是调用此alarm()前,进程已经设置了闹钟时间,则返回上一个闹钟时间的剩余时间,不然返回0。
  出错:-1原型

 

代码it

#include<unistd.h>
#include<signal.h>
void handler()循环

{
    printf("Hello\n");
    signal(SIGALRM, handler); //让内核作好准备,一旦接受到SIGALARM信号,就执行 handler
    alarm(5);
}im

 

void main()
{
    int i;
    handler();
    for(i=1;i<21;i++)margin

    {
        printf("sleep %d ...\n",i);
        sleep(1);
    }
}top

 

结果:刚开始在main中执行一次,而后每隔5秒执行一次handler()

 

Hello
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
Hello
sleep 6 ...
sleep 7 ...
sleep 8 ...
sleep 9 ...
sleep 10 ...
Hello
sleep 11 ...
sleep 12 ...
sleep 13 ...
sleep 14 ...
sleep 15 ...
Hello
sleep 16 ...
sleep 17 ...
sleep 18 ...
sleep 19 ...
sleep 20 ...
Hello

 

    注意:alarm只设定一个闹钟,时间到达并执行其注册函数以后,闹钟便失效。若是想循环设置闹钟,需在其注册函数中在调用alarm函数。

相关文章
相关标签/搜索