使用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问题,在学习时要注意!