这篇博客例子很好理解http://blog.csdn.net/u010155023/article/details/51984602
做个笔记方便日后复习
使用alarm函数可以设置一个定时器(闹钟时间),在将来的某个时刻该定时器会超时。当定时器超时时,产生SIGALRM信号。如果忽略或不捕捉此信号,则其默认动作是终止调用alarm函数的进程。
#include<unistd.h>
unsigned int alarm(unsigned int seconds);返回值为0或之前调用alarm函数设置闹钟时间的余留秒数。
参数seconds值是产生信号SIGALRM需要经过的时钟秒数。当这一时刻到达时,信号由内核产生,由于进程调度
的延迟,所以得到控制从而能处理该信号还需要一个时间每个进程只能有一个闹钟时间,如果在调用alarm时,之前已
经为该进程注册的闹钟时间还没有超时,则该闹钟时间的余留值作为本次alarm函数调用的值返回。以前注册的闹钟时间
则被新值代替。如果有以前注册的尚未超过的闹钟时间,而且本次调用的seconds值是0,则取消以前的闹钟时间,上次
调用alarm函数的余值仍作为本次调用的返回值。
虽然SIGALRM的默认动作是终止进程,但是大多数使用闹钟的进程捕捉此信号。如果此时要进程终止,则在之前
它可以执行所需的清理操作,如果我们想捕捉SIGALRM信号,则必须在调用alarm之前安装该信号的处理程序。我们先
调用alarm,然后在我们能够安装SIGALRM处理程序之前已接到该信号,那么进程将终止。