分类: C/C++
2015-08-21 15:04:12
系统中的每个进程都有一个私有的闹钟。这个闹钟很像一个计时器,可以设置在一定秒数后闹钟。时间一到,时钟就发送一个信号SIGALRM到进程。
函数原型:unsigned int alarm(unsigned int
seconds);
头文件:#include<unistd.h>
函数说明:
alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后,传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。
返回值:如果调用此alarm()前,进程已经设置了闹钟时间,则返回上一个闹钟时间的剩余时间,否则返回0。
出错返回-1。
例1:
int main(int argc, char *argv[])
{
}
运行结果:
首先打印
5秒后打印
再经过5秒,程序结束
例2:
static void timer(int
sig)
{
}
int main(int argc, char
*argv[])
{
}
除非进程为SIGALRM设置了处理函数,否则信号将杀死这个进程。比较下例中signal(SIGALRM, wakeup);语句打开与关闭的区别。
例3:
void
wakeup()
{
}
void main(int argc, char
*argv[])
{
}
计时器的另一个用途是调度一个在将来的某个时刻发生的动作同时做些其他事情。调度一个将要发生的动作很简单,通过调用alarm来设置计时器,然后继续做别的事情。当计时器计时到0时,信号发送,处理函数被调用。