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);
}