022 UNIX再学习 -- 信号处理
一、闹钟和睡眠 1、函数 alarm # include <unistd.h> unsigned int alarm ( unsigned int seconds) ; 返回值:返回 0 或先前所设闹钟的剩余秒数 (1)函数功能 使用 alarm 函数可以设置一个定时器 (闹钟时间) ,在将来的某个时刻该定时器会超时。当定时器超时时,产生 SIGALRM 信号 。如果忽略或不捕捉此信号,则其默认动作是终止调用该 alarm 函数的进程。 (2)参数解析 参数 seconds 的值是产生信号 SIGALRM 需要经过的时钟秒数。 当这个时刻到达时,信号由内核产生,由于进程调度的延迟,所以进程得到控制从而能够处理该信号还需要一个时间间隔。 (3)函数解析 每个进程只能有一个闹钟时间。 如果在调用 alarm 时,之前已为该进程注册的闹钟时间还没有超时,则该闹钟时间的余值作为本次 alarm 函数调用的值返回。以前注册的闹钟时间则被新值代替。 如果有以前注册的尚未超过的闹钟时间,而且 本次调用的 seconds 值是 0,则取消以前的闹钟时间 ,其余留值仍作为 alarm 函数的返回值。 虽然 SIGALRM 的默认动作是终止进程,但是大多数使用闹钟的进程捕捉此信号。 如果此时进程要终止,则在终止之前它可以执行所需的清理操作。如果我们想捕捉 SIGALRM 信号,则必须在调用 alarm