Linux C语言实时监测某变量是否变化,一段时间未变化,再次发送
2016-11-22 20:25
232 查看
描述下大致功能:需要监测某个变量或整个函数返回值是否发生变化,若发生了变化,将变化的值传出去,若5分钟内该变量值还没有变化,变量也会继续传出去。
用处:监测某个预警值,发生警告了就处理,但是又不想一直发送,发生了新的告警信息才发送,如果同一个告警信息,一段时间没有处理,需要再次发生该告警信息,及时处理告警。
![](http://img.blog.csdn.net/20161122200938401)
![](http://img.blog.csdn.net/20161122201732653)
从执行的结果可以看出第一次执行 i =2,会退出第一层while循环(执行了3个打印语句),第二次第三次也因为i的值确实发生了变化,退出了while循环。
第四次i=3,与上一次结果一样,并没有变化,而且时间也少于3s,没有退出,继续监测。
从图上看“recycle 8 time”后三次执行结果,i =3没有变化,但是第三次i = 3的时候,超过了规定时间3s没有变化,再发生一次监测变量,以便处理。
综上结果分析,算是符合了要求。
/本人当时做UDP数据传输时,需要实时监测trap PDU是否发生变化。如果一段时间没有处理该trap,就继续发送!/
/有问题欢迎指正。。。/
用处:监测某个预警值,发生警告了就处理,但是又不想一直发送,发生了新的告警信息才发送,如果同一个告警信息,一段时间没有处理,需要再次发生该告警信息,及时处理告警。
#include <stdio.h> #include <time.h> #include <stdlib.h> int monitor_var(); void main() { int monitor; int i=0; static int monitor_var_keep; int start,finish; float total_time=0; while(1) { while(1) { start =time(NULL);//记录本次监测变量开始的时间 monitor = monitor_var(); /*monitor_var_keep=0是因为第一次执行或者检测monitor是否发生变化*/ if((monitor_var_keep==0)|(monitor!=monitor_var_keep)) { monitor_var_keep = monitor; break; } finish = time(NULL);//记录本次监测变量结束时间 total_time +=(float)(finish-start);//记录监测变量总时间 printf("total_time is %f\n",total_time); if(total_time>=3.0)//当监测3s没有发生变化,总时间清零,并退出循环。 { total_time=0; break; } }//end while /*只有退出上一层while循环才会执行后续的3个打印语句。*/ printf("monitor is %d\n",monitor); printf("monitor_var_keep is %d\n",monitor_var_keep); /*此处根据需要写处理监测变量的函数,例如进行UDP通信,将数据发送到服务端*/ printf("recycle %d time\n",++i); }//end while。 }//end main。 int monitor_var() { int i=1; srand(time(NULL)); i = rand()%3+1; sleep(1); printf("i = %d\n",i); return i; }
从执行的结果可以看出第一次执行 i =2,会退出第一层while循环(执行了3个打印语句),第二次第三次也因为i的值确实发生了变化,退出了while循环。
第四次i=3,与上一次结果一样,并没有变化,而且时间也少于3s,没有退出,继续监测。
从图上看“recycle 8 time”后三次执行结果,i =3没有变化,但是第三次i = 3的时候,超过了规定时间3s没有变化,再发生一次监测变量,以便处理。
综上结果分析,算是符合了要求。
/本人当时做UDP数据传输时,需要实时监测trap PDU是否发生变化。如果一段时间没有处理该trap,就继续发送!/
/有问题欢迎指正。。。/
相关文章推荐
- Android实时监听是否有网络,常驻广播——监测网络变化
- java实时监测文件夹的变化,允许多用户同时访问,完成文件转移
- windows实时监测热插拔设备的变化
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- android 实时监测网络变化
- 实时监测网络是否断线的几种办法
- iOS开发之实时监测textField输入变化
- 连接OneNET物联网平台,实时监测家里的温湿度变化
- 监测TextField实时变化
- ThinkPHP3.2.3---mysql+ajax实现长连接,实时监测数据库数据是否更新
- Stopwatch 监测一段时间内一个任务是否完成
- 实时监测输入框值得变化
- 分享Grunt.js配置: watch + liveReload 实时监测文件变化自动刷新浏览器
- 实时监测网络是否断线的几种办法(转coolend)
- UITextField中实时监测text值的变化
- 在html中实时监测输入框的变化------onChange是做不到的
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- iOS开发之实时监测textField输入变化