alarm函数可以定时

貌似是可以的,不过感觉好像这样用不是很好,最好还是用回timer_settimer一些列函数吧,不过既然开了头,就看下alarm怎么用吧。

1. 所需头文件  #include<unistd.h>
 
2. 定义函数  unsigned int alarm(unsigned int seconds);

    函数说明  alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。

                 如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。

    返回值    返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。
 

3. 代码

#include<unistd.h>
#include<signal.h>

void handler() 
{
    printf("Hello\n");
    signal(SIGALRM,handler);    //让内核做好准备,一旦接受到SIGALARM信号,就执行handler
    alarm(5);
}/*这段函数的执行时间不计算在for循环的时间之内*/

void main()
{
    int i;
    handler();
    for(i=1;i<21;i++) {
        printf("sleep %d ...\n", i);
        sleep(1);
    }
} 

  

4. 效果

刚开始在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

  

posted @ 2013-11-27 22:26  yison.li  阅读(309)  评论(0编辑  收藏  举报