心跳防护程序 收藏
2009-09-24 14:09
190 查看
从CSDN开发高手杂志上看到应用程序的心跳防护功能。觉得很有用。目前已经试用到实际项目。在试用的过程中,自己也对该功能有了更深的了解。在此把自己对该部分的了解记录下来,希望对后来者能够提供帮助。
心跳防护程序的功能及使用方法
心跳防护程序的作用
心跳防护程序用于实现无人值守的程序的自维护功能,使得被防护程序由于某种异常而导致崩溃时可以自动重新启动,满足无人值守的环境要求。
心跳防护程序适用于那些需要无人值守,长期运行,但程序由于不确定性因素有出现崩溃的可能。说明:本程序不是用来防护代码质量差的程序的。
心跳防护程序的组成
心跳防护程序由两部分组成。分别用于心脏跳动和心脏恢复。
第一部分为心跳计数模块,需要植入被防护程序中,作为程序的心脏。当程序运行正常时,心跳计数也会正常进行。该模块以动态库形式发布。提供心跳启动和心跳终止两个接口。
第二部分为心跳恢复模块。由心跳计数模块启动,监控被防护程序的运行状态,当发现被防护程序运行异常时,删除已存在的进程,重新启动被防护程序,实现心跳继续。该模块以应用程序形式存在。
心跳防护程序的原理
心跳防护程序的核心是在心脏跳动和心脏恢复两个模块之间创建一个信号量。心脏跳动模块负责给信号量增值,心脏恢复模块负责给信号量减值。增减值采用同一频率(每秒一次)。当心脏跳动正常时,信号量的值基本保持不变。如果心脏跳动异常(比如程序崩溃),信号量将不增加。心脏恢复模块通过减值可以侦测到信号量为0,此时认为被防护程序已出现问题,删除被防护程序的已有进程(通过进程名称),然后重新启动新程序。这样就可以保持被防护程序的持续运行。
心跳防护程序的使用
需要将心跳计数模块引入被防护程序。心跳计数模块为动态库,名为HeartBeat.dll。需要在被防护程序中包含HeartBeat.lib,并引入HeartBeat.h文件。本动态库包含两个接口函数,分别为:
启动心跳函数:StartHeartBeat((char * pszProgamName,int nTimeOut)
本函数用于启动心跳计数。需要在被防护程序启动时调用。一般可以在OnInitInstance函数中。第一个参数为被防护程序的全路径,可以用GetModuleFileName函数获取,第二个参数为超时时间,即多长时间被防护程序没有计数即认为异常,单位为秒。
终止心跳函数:StopHeartBeat()
本函数用于正常终止被防护程序,可在OnExitInstance函数中调用。正常终止时,同时会终止心跳恢复进程。
心跳防护程序的功能及使用方法
心跳防护程序的作用
心跳防护程序用于实现无人值守的程序的自维护功能,使得被防护程序由于某种异常而导致崩溃时可以自动重新启动,满足无人值守的环境要求。
心跳防护程序适用于那些需要无人值守,长期运行,但程序由于不确定性因素有出现崩溃的可能。说明:本程序不是用来防护代码质量差的程序的。
心跳防护程序的组成
心跳防护程序由两部分组成。分别用于心脏跳动和心脏恢复。
第一部分为心跳计数模块,需要植入被防护程序中,作为程序的心脏。当程序运行正常时,心跳计数也会正常进行。该模块以动态库形式发布。提供心跳启动和心跳终止两个接口。
第二部分为心跳恢复模块。由心跳计数模块启动,监控被防护程序的运行状态,当发现被防护程序运行异常时,删除已存在的进程,重新启动被防护程序,实现心跳继续。该模块以应用程序形式存在。
心跳防护程序的原理
心跳防护程序的核心是在心脏跳动和心脏恢复两个模块之间创建一个信号量。心脏跳动模块负责给信号量增值,心脏恢复模块负责给信号量减值。增减值采用同一频率(每秒一次)。当心脏跳动正常时,信号量的值基本保持不变。如果心脏跳动异常(比如程序崩溃),信号量将不增加。心脏恢复模块通过减值可以侦测到信号量为0,此时认为被防护程序已出现问题,删除被防护程序的已有进程(通过进程名称),然后重新启动新程序。这样就可以保持被防护程序的持续运行。
心跳防护程序的使用
需要将心跳计数模块引入被防护程序。心跳计数模块为动态库,名为HeartBeat.dll。需要在被防护程序中包含HeartBeat.lib,并引入HeartBeat.h文件。本动态库包含两个接口函数,分别为:
启动心跳函数:StartHeartBeat((char * pszProgamName,int nTimeOut)
本函数用于启动心跳计数。需要在被防护程序启动时调用。一般可以在OnInitInstance函数中。第一个参数为被防护程序的全路径,可以用GetModuleFileName函数获取,第二个参数为超时时间,即多长时间被防护程序没有计数即认为异常,单位为秒。
终止心跳函数:StopHeartBeat()
本函数用于正常终止被防护程序,可在OnExitInstance函数中调用。正常终止时,同时会终止心跳恢复进程。
相关文章推荐
- 心跳防护程序
- 心跳防护程序的功能及使用方法
- 心跳防护程序
- 心跳防护程序
- android 程序中res/values-v14/styles.xml报错的解决办法 分类: Android安装及配置 2014-12-22 20:59 192人阅读 评论(0) 收藏
- 【收藏】最有趣的程序
- LINUX下java串口程序环境配置 分类: LINUX 2010-07-07 10:04 1571人阅读 评论(0) 收藏
- VxWorks 引导程序 分类: vxWorks 2014-03-14 08:45 314人阅读 评论(0) 收藏
- [收藏]DataView+DataTable 快速格式化你的程序
- android主题Theme.NoTitleBar.Fullscreen下如何设置程序的字体颜色为黑色 分类: Android界面和组件 2014-06-21 14:04 162人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号应用实例 分类: Linux --- 应用程序设计 2014-11-09 11:33 66人阅读 评论(0) 收藏
- des加密算法程序收藏可用
- Android signed APK程序… 分类: Android开发 2014-05-30 10:53 66人阅读 评论(0) 收藏
- 为Android App程序签名ZZ 分类: Android开发 2014-05-30 10:54 96人阅读 评论(0) 收藏
- 无法安装或运行此应用程序。该应用程序要求首先在"全局程序集缓存(GAC)"中安装程序集 收藏
- Netty 超时机制及心跳程序实现
- 程序的自我修改收藏
- 程序源码中新进收藏
- 小程序收藏
- VS2008中开发智能设备程序的一些总结收藏