alarm
定义
也称为闹钟函数,它可以在进程中设置一个定时器,当定时器指定的时间到时,它向进程发送SIGALRM信号。可以设置忽略或者不捕获此信号,如果采用默认方式其动作是终止调用该alarm函数的进程。
#include "head.h"
#include <signal.h>
#include <unistd.h>int main()
{key_t key = ftok(".",1);alarm(5);int i = 1;for(i = 1; i < 100; i++){printf("%d\n",i);fflush(stdout);sleep(1);}}
#include "head.h"
#include <signal.h>
#include <unistd.h>void handler(int s)
{printf("SIGALRM 现在已经被更改了,默认是终止调用该alarm函数的进程\n");
}int main()
{key_t key = ftok(".",1);signal(SIGALRM,handler);alarm(5);int i = 1;for(i = 1; i < 100; i++){printf("%d\n",i);fflush(stdout);sleep(1);}}
用alarm制作一个小的计算测试系统
在10秒内完成10以内的加法计算,最后输出计算正确,错误数量
#include "head.h"
#include <signal.h>int X ,Y;int handler(int s)
{printf("RIGHT :%d FALSE :%d\n",X,Y);exit(0);
}int main()
{key_t key = ftok(".",1);srand((unsigned)time(NULL));signal(SIGALRM,handler);alarm(10);while(1){int x = rand() % 10;int y = rand() % 10;int z = 0;printf("%d + %d = ",x,y);scanf("%d",&z);if(z = (x+y))X++;elseY++;}alarm(0);
}