Linux中的定时信号机制

简介:

前段时间在做一个项目的时候遇到了一点问题,做了一个安全方面的东西,主要目的是为了实现一段程序在规定的时间内完成,如果在规定时间内不能够完成相应的操作时,程序报警。

对于这种方案其解决方案有很多,我想到了利用系统的时间函数来对时间进行控制,也想到了用已有的协议去完成,但这些方法都过于繁杂,而且不利于理解,在我之前的一篇博文中我曾提到过一个函数alarm,那么我就想到了可以利用Linux的信号机制来实现这一功能。
  我们都知道一旦在程序中对消息进行了设置后,我们便可利用alarm函数进行时间的控制,例如我们在程序中先定于了SIGNAL如下:
 
 
  1. signal(SIGALRM, signalFun); 
而后在程序中对时间进行了设定:
 
 
  1. alarm(5); 
这样就可以实现了再5秒后执行函数signalFun,如果再次过程中我们已经完成了程序,则可以用alarm(0);对刚刚我们设置的信号进行消去,
 
 
  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. #include <signal.h> 
  4.  
  5. void signalFun() 
  6.     printf("ByeBye!\n"); 
  7.     exit(0); 
  8. void testFun() 
  9.     int num; 
  10.     alarm(3); 
  11. loop:   printf("Please Input The Num : "); 
  12.     scanf("%d", &num); 
  13.     if(num > 10) 
  14.     { 
  15.         printf("Hello World!\n"); 
  16.         alarmm(0); 
  17.     } 
  18.     else 
  19.         goto loop; 
  20. int main(int argc, char *argv[]) 
  21.     signal(SIGALRM, signalFun); 
  22.     testFun(); 
  23.     return 0; 
在这个程序中如果你输入的数均小于10,则会让你重新输入,直到3秒到了以后如果还没成功输入大于10的数,则程序调用signalFun函数,如果在3秒内成功的输入了一个大于10 的数,则会执行alarm(0);从而使定时信号取消,程序正常运行。
从而利用这种方法,我的安全方案也就告一段落了。


     本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/947768,如需转载请自行联系原作者

相关文章
|
1天前
|
Ubuntu Linux
【Linux】详解信号产生的方式
【Linux】详解信号产生的方式
|
1天前
|
Unix Linux
【Linux】详解信号的分类&&如何自定义信号的作用
【Linux】详解信号的分类&&如何自定义信号的作用
|
1天前
|
存储 Linux C语言
Linux:冯·诺依曼结构 & OS管理机制
Linux:冯·诺依曼结构 & OS管理机制
9 0
|
1天前
|
Linux 数据库
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
|
1天前
|
Unix Linux C语言
|
1天前
|
安全 Linux
【Linux】详解用户态和内核态&&内核中信号被处理的时机&&sigaction信号自定义处理方法
【Linux】详解用户态和内核态&&内核中信号被处理的时机&&sigaction信号自定义处理方法
|
1天前
|
存储 Linux C++
【Linux】详解信号的保存&&信号屏蔽字的设置
【Linux】详解信号的保存&&信号屏蔽字的设置
|
1天前
|
存储 Linux
【Linux】对信号产生的内核级理解
【Linux】对信号产生的内核级理解
|
1天前
|
安全 Linux 调度
xenomai+linux双内核下的时钟管理机制
clock是操作系统正常运行的发动机,系统利用时钟中断维持系统时间、促使任务调度,以保证所有进程共享CPU资源;可以说,“时钟中断”是整个操作系统的脉搏。那你是否好奇xenomai cobalt内核和Linux内核双内核共存的情况下,时间子系统是如何工作的?一个硬件时钟如何为两个操作系统提供服务的?本文将揭开xenomai双核系统时间机制
14 0
xenomai+linux双内核下的时钟管理机制
|
1天前
|
存储 安全 Linux
【探索Linux】P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )
【探索Linux】P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )
8 0