1. alarm函数
(1) alarm函数原型
alarm(设置信号传送闹钟) |
|
所需头文件 |
#include <unistd.h> #include <signal.h> |
函数说明 |
alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回 |
函数原型 |
unsigned int alarm(unsigned int seconds) |
函数返回值 |
返回之前闹钟的剩余秒数,如果之前未设闹钟,则返回0 |
(2) alarm函数说明
当所设置的时间值超过后,产生SIGALRM信号。如果不忽略或不捕捉此信号,则其默认动作是终止该进程。
每个进程只能有一个闹钟时间。如果在调用alarm时,以前已为该进程设置过闹钟时间,而且它还没有超时,则该闹钟时间的剩余时间值作为本次alarm函数调用的值返回,以前登记的闹钟时间则被新值代换。
如果有以前登记的尚未超过的闹钟时间,而新设的闹钟时间值为0,则取消以前的闹钟时间,其剩余时间值仍作为函数的返回值。
(3) alarm函数举例
alarm.c 源代码如下:
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
void handler() { /*信号处理函数*/
printf("hello\n");
}
int main()
{
int i;
int time ;
signal(SIGALRM,handler); /*注册SIGALRM信号处理方式*/
alarm(3);
for(i=1;i<5;i++){
printf("sleep %d ...\n", i);
sleep(1);
}
alarm(3);
sleep(2);
time=alarm(0) ; /*取消SIGALRM信号,返回剩余秒数*/
printf("time=%d\n",time) ;
for(i=1;i<3;i++){
printf("sleep %d ...\n", i);
sleep(1);
}