alarm也称为闹钟函式,它可以在进程中设定一个定时器,当定时器指定的时间到时,它向进程传送SIGALRM信号。可以设定忽略或者不捕获此信号,如果採用默认方式其动作是终止调用该alarm函式的进程。
基本介绍
- 中文名:闹钟函式
- 外文名:alarm
- 特点:进程传送SIGALRM信号
- 特色:终止调用该alarm
Linux C
alarm函式
要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设定过闹钟时间,则任何以前的闹钟时间都被新值所代替。需要注意的是,经过指定的秒数后,信号由核心产生,由于进程调度的延迟,所以进程得到控制从而能够处理该信号还需要一些时间。
如果有以前为进程登记的尚未逾时的闹钟时钟,而且本次调用的seconds值是0,则取消以前的闹钟时钟,其余留值仍作为alarm函式的返回值。
所需头档案
#include<unistd.h>
函式原型
unsigned int alarm(unsigned int seconds);
函式参数
seconds:指定秒数
函式返回值
成功:如果调用此alarm()前,进程已经设定了闹钟时间,则返回上一个闹钟时间的剩余时间,否则返回0。
出错:-1
程式示例
该示例完成了一个简单的sleep函式的功能,由于SIGALRM默认的系统动作为终止该进程,因此在程式调用pause之后,程式就终止了。
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main(void){
alarm(50);
int ret;
sleep(30);
ret=alarm(10);
printf("%d\n",ret);
pause();
return 0;
}
程式输出:
先等待30秒 再输出20 等待10秒列印出闹钟