alarm()和pause()

来源:互联网 发布:仙剑6优化好了吗 编辑:程序博客网 时间:2024/06/05 15:06

使用alarm函数定时,然后通过pause等待alarm函数的信号

1:使用alarm函数的时候要注意alarm函数的覆盖性,即在一个进程中采用一次alarm函数则该进程之前的alarm函数将失效。

2:pause函数为将进程挂起,然后等待信号。

3:因为alarm函数在定时器到点的时候产生的信号默认为让该进程退出。因此本代码运行5秒然后直接退出,终端不会输出printf中的语句。

 

tips:挂起和阻塞的区别为,挂起是进程主动行为,阻塞是进程的被动行为。

*************************************/

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

 

int main(int argc,char *argv[])

{

       intret;

      

       ret=alarm(5);

       pause();

       printf("willthis be printed?\n");

}


如果在执行完alarm(second)这句,在pause()这句之前就发生SIGALRM信号,那么程序会怎么样呢?答案是永远暂停在那里!当然了,我们这里使用的是alarm这个函数来产生SIGALRM信号,最小也要1秒以后产生,1秒以后pause()函数早已执行,因此一般情况不会出现bug,毕竟由于alarm函数特殊,如果是其他信号产生机制呢?所以对于这类极小概率的bug问题,在学习时要注意!

原创粉丝点击