加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

简述Linux的定时信号机制

发布时间:2013-06-19 08:28:19 所属栏目: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);从而使定时信号取消,程序正常运行。

从而利用这种方法,我的安全方案也就告一段落了。

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读