alarm

秒级别的发送闹钟信号

头文件

#include < unistd.h >

函数原型

unsigned int alarm(unsigned int seconds);

函数说明

alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。

alarm() 的定时是一次性的,若想实现循环定时功能,则需要手动在本次定时结束时再次启动 alarm() 定时。alarm() 在定时到时后会发出一个 SIGALRM 信号,所以还需要我们拦截这一信号才能接收到定时回调结果。

alarm(0) 为关闭定时器,并返回上次剩余的时间

返回值

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

范例


#include<unistd.h>
#include<signal.h>
void handler() {
    printf(“hello\n”);
}
main()
{
    int i;
    signal(SIGALRM,handler);
    alarm(5);
    for(i=1;i<7;i++){
        printf(“sleep %d ...\n”,i);
        sleep(1);
    }
}

执行

sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
hello
sleep 6 ...
文档更新时间: 2021-03-06 11:53   作者:周国强