歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 簡述Linux的定時信號機制

簡述Linux的定時信號機制

日期:2017/3/3 16:27:02   编辑:關於Linux

前段時間在做一個項目的時候遇到了一點問題,做了一個安全方面的東西,主要目的是為了實現一段程序在規定的時間內完成,如果在規定時間內不能夠完成相應的操作時,程序報警。

對於這種方案其解決方案有很多,我想到了利用系統的時間函數來對時間進行控制,也想到了用已有的協議去完成,但這些方法都過於繁雜,而且不利於理解,在我之前的一篇博文中我曾提到過一個函數alarm,那麼我就想到了可以利用Linux的信號機制來實現這一功能。

我們都知道一旦在程序中對消息進行了設置後,我們便可利用alarm函數進行時間的控制,例如我們在程序中先定於了SIGNAL如下:

signal(SIGALRM, signalFun);

而後在程序中對時間進行了設定:

alarm(5);

這樣就可以實現了再5秒後執行函數signalFun,如果再次過程中我們已經完成了程序,則可以用alarm(0);對剛剛我們設置的信號進行消去,

#include <stdio.h>    
#include <stdlib.h>    
#include <signal.h>    
        
void signalFun()    
{    
    printf("ByeBye!\n");    
    exit(0);    
}    
void testFun()    
{    
    int num;    
    alarm(3);    
loop:   printf("Please Input The Num : ");    
    scanf("%d", &num);    
    if(num > 10)    
    {    
        printf("Hello World!\n");    
        alarmm(0);    
    }    
    else
        goto loop;    
}    
int main(int argc, char *argv[])    
{    
    signal(SIGALRM, signalFun);    
    testFun();    
    return 0;    
}

在這個程序中如果你輸入的數均小於10,則會讓你重新輸入,直到3秒到了以後如果還沒成功輸入大於10的數,則程序調用signalFun函數,如果在3秒內成功的輸入了一個大於10 的數,則會執行alarm(0);從而使定時信號取消,程序正常運行。

從而利用這種方法,我的安全方案也就告一段落了。

Copyright © Linux教程網 All Rights Reserved