linux中信号机制的编程过程,Linux中的定时信号机制

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

对于这种方案其解决方案有很多,我想到了利用系统的时间函数来对时间进行控制,也想到了用已有的协议去完成,但这些方法都过于繁杂,而且不利于理解,在我之前的一篇博文中我曾提到过一个函数alarm,那么我就想到了可以利用Linux的信号机制来实现这一功能。

我们都知道一旦在程序中对消息进行了设置后,我们便可利用alarm函数进行时间的控制,例如我们在程序中先定于了SIGNAL如下:

signal(SIGALRM, signalFun);

而后在程序中对时间进行了设定:

alarm(5);

这样就可以实现了再5秒后执行函数signalFun,如果再次过程中我们已经完成了程序,则可以用alarm(0);对刚刚我们设置的信号进行消去,【Linux公社 http://www.linuxidc.com 】

#include 

#include 

#include 

voidsignalFun()

{

printf("ByeBye!\n");

exit(0);

}

voidtestFun()

{

intnum;

alarm(3);

loop:   printf("Please Input The Num : ");

scanf("%d", &num);

if(num > 10)

{

printf("Hello World!\n");

alarmm(0);

}

else

gotoloop;

}

intmain(intargc,char*argv[])

{

signal(SIGALRM, signalFun);

testFun();

return0;

}

在这个程序中如果你输入的数均小于10,则会让你重新输入,直到3秒到了以后如果还没成功输入大于10的数,则程序调用signalFun函数,如果在3秒内成功的输入了一个大于10 的数,则会执行alarm(0);从而使定时信号取消,程序正常运行。

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

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值