心跳防护程序的功能及使用方法
2011-09-01 23:04
369 查看
[align=center]心跳防护程序的功能及使用方法[/align]
心跳防护程序的作用
心跳防护程序用于实现无人值守的程序的自维护功能,使得被防护程序由于某种异常而导致崩溃时可以自动重新启动,满足无人值守的环境要求。
心跳防护程序适用于那些需要无人值守,长期运行,但程序由于不确定性因素有出现崩溃的可能。说明:本程序不是用来防护代码质量差的程序的。
心跳防护程序的组成
心跳防护程序由两部分组成。分别用于心脏跳动和心脏恢复。
第一部分为心跳计数模块,需要植入被防护程序中,作为程序的心脏。当程序运行正常时,心跳计数也会正常进行。该模块以动态库形式发布。提供心跳启动和心跳终止两个接口。
第二部分为心跳恢复模块。由心跳计数模块启动,监控被防护程序的运行状态,当发现被防护程序运行异常时,删除已存在的进程,重新启动被防护程序,实现心跳继续。该模块以应用程序形式存在。
心跳防护程序的原理
心跳防护程序的核心是在心脏跳动和心脏恢复两个模块之间创建一个信号量。心脏跳动模块负责给信号量增值,心脏恢复模块负责给信号量减值。增减值采用同一频率(每秒一次)。当心脏跳动正常时,信号量的值基本保持不变。如果心脏跳动异常(比如程序崩溃),信号量将不增加。心脏恢复模块通过减值可以侦测到信号量为0,此时认为被防护程序已出现问题,删除被防护程序的已有进程(通过进程名称),然后重新启动新程序。这样就可以保持被防护程序的持续运行。
心跳防护程序的使用
需要将心跳计数模块引入被防护程序。心跳计数模块为动态库,名为HeartBeat.dll。需要在被防护程序中包含HeartBeat.lib,并引入HeartBeat.h文件。本动态库包含两个接口函数,分别为:
启动心跳函数:StartHeartBeat((char * pszProgamName,int nTimeOut)
本函数用于启动心跳计数。需要在被防护程序启动时调用。一般可以在OnInitInstance函数中。第一个参数为被防护程序的全路径,可以用GetModuleFileName函数获取,第二个参数为超时时间,即多长时间被防护程序没有计数即认为异常,单位为秒。
终止心跳函数:StopHeartBeat()
本函数用于正常终止被防护程序,可在OnExitInstance函数中调用。正常终止时,同时会终止心跳恢复进程。
http://blog.csdn.net/happyparrot/article/details/1062501 转自
心跳防护程序的作用
心跳防护程序用于实现无人值守的程序的自维护功能,使得被防护程序由于某种异常而导致崩溃时可以自动重新启动,满足无人值守的环境要求。
心跳防护程序适用于那些需要无人值守,长期运行,但程序由于不确定性因素有出现崩溃的可能。说明:本程序不是用来防护代码质量差的程序的。
心跳防护程序的组成
心跳防护程序由两部分组成。分别用于心脏跳动和心脏恢复。
第一部分为心跳计数模块,需要植入被防护程序中,作为程序的心脏。当程序运行正常时,心跳计数也会正常进行。该模块以动态库形式发布。提供心跳启动和心跳终止两个接口。
第二部分为心跳恢复模块。由心跳计数模块启动,监控被防护程序的运行状态,当发现被防护程序运行异常时,删除已存在的进程,重新启动被防护程序,实现心跳继续。该模块以应用程序形式存在。
心跳防护程序的原理
心跳防护程序的核心是在心脏跳动和心脏恢复两个模块之间创建一个信号量。心脏跳动模块负责给信号量增值,心脏恢复模块负责给信号量减值。增减值采用同一频率(每秒一次)。当心脏跳动正常时,信号量的值基本保持不变。如果心脏跳动异常(比如程序崩溃),信号量将不增加。心脏恢复模块通过减值可以侦测到信号量为0,此时认为被防护程序已出现问题,删除被防护程序的已有进程(通过进程名称),然后重新启动新程序。这样就可以保持被防护程序的持续运行。
心跳防护程序的使用
需要将心跳计数模块引入被防护程序。心跳计数模块为动态库,名为HeartBeat.dll。需要在被防护程序中包含HeartBeat.lib,并引入HeartBeat.h文件。本动态库包含两个接口函数,分别为:
启动心跳函数:StartHeartBeat((char * pszProgamName,int nTimeOut)
本函数用于启动心跳计数。需要在被防护程序启动时调用。一般可以在OnInitInstance函数中。第一个参数为被防护程序的全路径,可以用GetModuleFileName函数获取,第二个参数为超时时间,即多长时间被防护程序没有计数即认为异常,单位为秒。
终止心跳函数:StopHeartBeat()
本函数用于正常终止被防护程序,可在OnExitInstance函数中调用。正常终止时,同时会终止心跳恢复进程。
http://blog.csdn.net/happyparrot/article/details/1062501 转自
相关文章推荐
- 关于android程序中使用bitmap放大功能时的OOM问题解决方法
- 使用native方法扩展Java程序的功能详解
- C#程序中使用DataView的ToTable方法实现distinct功能
- ATS程序功能和使用方法详解
- 【程序】STM32F1单片机I2C中Packet Error Checking(PEC)校验功能和DMA的使用方法
- 使用native方法扩展Java程序的功能
- ATS程序功能和使用方法详解
- 使用CMS方法开发功能强大的Web程序
- ATS程序功能和使用方法详解
- Qt程序打包发布方法(使用官方提供的windeployqt工具)
- 经典vim插件功能说明、安装方法和使用方法介绍(已更新)
- 二进制程序分析工具Pin在Windows系统中的安装和使用方法
- Nginx基本使用方法及各模块基本功能
- ASP.NET MVC 中CSS JS压缩合并 功能的使用方法
- STM32基础知识3-STM32串口USART1的使用方法和程序
- 将所有程序设置XML集中到一个单独XML配置文件的方法:使用appSettings元素的configSource元素
- 一个可以禁用USB存储设备的程序(SetupAPI的使用方法)
- 在使用 Spring Security 的 Remember Me 记住密码功能时遇到的问题和解决方法
- 心跳防护程序 收藏
- 经典vim插件功能说明、安装方法和使用方法介绍(备用)