那年,一步一步学linux c ---alarm



本系列文章由muge0913编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7337363


alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。信号正常发送时返回值为0。若新的报警设置在前一次设定尚未结束时,发送,则返回前一次设置所剩时间。返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。

alarm()执行后,进程将继续执行,在后期(alarm以后)的执行过程中将会在seconds秒后收到信号SIGALRM并执行其处理函数。


使用alarm函数可以设置一个计时器,在将来某个指定的时间该计时器会超时。当计时器超时时,产生SIGALARM信号。如果不捕捉或不忽略此信号,则其默认动作是终止调用该alarm函数的进程。

 

每个进程只能有一个闹钟时钟,如果在调用alarm时,已经为该进程设置过闹钟时钟,而且它还没有超时,则将该闹钟时钟的余留值作为本次alarm函数调用的返回值。以前登记的闹钟时钟将被新值代替。

 

如果有以前为进程登记的尚未超过的闹钟时钟,而且本次调用的seconds为0,则取消以前的闹钟时钟,其余留值仍作为alarm的返回值。

(以上这几段话摘自《unix环境高级编程》)



#include <stdio.h>
#include <signal.h>
#include <time.h>

void func();
void main()
{
     signal(SIGALRM,&func);
     alarm(4);

     while(1)
       pause();

}

void func()
{
     printf("getsigalrm!!\n");
     alarm(1);
}

那年,一步一步学linux c ---alarm_第1张图片





你可能感兴趣的:(编程,c,linux,unix,Signal)