
本发明属于服务器监控管理技术领域,具体涉及一种嵌入式Linux系统下C语言监控软件容错的方法。
背景技术:
目前嵌入式Linux系统已经广泛应用在了服务器监控领域,这些监控软件,时时刻刻对服务器的运行状态进行监控管理,需要保持长时间的稳定运行,并能够在自身崩溃的情况下,在较短的时间内重新运行。
因此,提供一种嵌入式Linux系统下C语言监控软件容错的方法是十分必要的。
技术实现要素:
本发明的目的在于解决上述现有技术中存在的缺少try catch类型的异常处理机制,无法在监控软件中进行错误处理等难题,提供一种嵌入式linux系统下C语言监控软件容错的方法。
本发明是通过以下技术方案实现的:
一种嵌入式Linux系统下C语言监控软件容错的方法,其特征在于:包括以下步骤:(1)监控软件开始运行;
(2)代码是否满足监控条件,如果满足进入步骤(3),若不满足,退出监控;
(3)进行注册信 处理;一旦监控软件发生错误,错误就由信 处理流程接管,而不是由操作系统处理,一般是直接退出;
(4)检测信 ,检测是否存在错误信 ,如果不能检测到错误信 ,执行正常监控流程,进入步骤(5),如果检测到错误信 ,则执行错误处理,跳转至步骤(2);将检测信 处理过程增加在监控主体前,无信 时进行正常的监控主体流程,有信 时则进行错误处理。
(5)监控主体是否产生错误信 ,如果产生错误信 ,进行信 处理,并跳转至步骤(4),如果没有产生错误信 ,则跳转至步骤(2)重新开始监控流程。在信 处理过程中,增加跳转,使程序跳回监控程序的循环流程。
作为优选,所述步骤5中进行信 处理时,还进行日志记录操作。
作为优选,所述步骤5中进行信 处理时,还进行信 类型记录操作。
作为优选,所述步骤(4)中进行错误处理时,还进行错误发生时间记录操作。
作为优选,所述步骤(4)中进行错误处理时,还进行全局变量记录操作。
一种用于实现上述容错方法的系统,该系统集中于嵌入式Linux系统的操作核心层,其特征在于:包括监控管理模块,以及与其相连接的进程管理模块、信 处理模块、错误处理模块,所述进程管理模块、信 处理模块、错误处理模块依次连接,其中:
(1)进程管理模块,该模块用于实现监控过程周期管理,包括监控进程的创建、调度、通信,使得原生进程在有序执行原有逻辑的同时,满足C语言容错监控的需要;
(2)信 处理模块,该模块用于实现注册信 检测以及信 处理,注册信 检测到错误后,首先程序自行进行处理,无法解决时进入Linux操作系统处理;信 处理模块将终端的程序流程跳转,重新回到监控流程中;
(3)错误处理模块,该模块用于实现错误类型诊断以及根据预配置采取相应错误处理方式,完成错误修复;
(4)监控管理模块,包括总控制端以及内部管理端,总控制端提供给用户可视的操作界面,内部管理端与总控制端进行交互,使得用户可在总控制端查看监控软件运行状态,容错日志,对系统各项参数进行预配置。
与现有技术相比,本发明的有益效果是:
本发明提供的一种嵌入式Linux环境下C语言监控软件容错的方法,通过在C语言中实现类似C++中的try catch异常处理结构,在监控软件中第一时间捕获错误,并对错误进行处理,避免程序发生崩溃,从而使得监控软件具有更强的容错性。能使得监控软件在遇到段错误、浮点运算错误、退出错误的情况下,保证监控程序的循环过程一直执行,并能够在错误处理过程里对错误信息、错误发生的位置进行记录,以便于错误的分析。方案中还提供了用于实现该方法的系统设计,该系统基于C语言监控软件的容错策略和方法,实现了对监控过程中错误程序的处理,性能损耗小,有效提高了系统的操作可靠性,避免了硬件定制的复杂性。
此外,本发明方法原理可靠,步骤简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
图1是本发明提供的一种嵌入式Linux环境下C语言监控软件容错的方法的工作流程图。
图2是本发明提供的一种嵌入式Linux环境下C语言监控软件容错系统的结构示意图。
其中,1-进程管理模块,2-信 处理模块,3-错误处理模块,4-监控管理模块,41-总控制端,42-内部管理端。
具体实施方式
下面结合附图对本发明作进一步详细描述:
一种嵌入式Linux系统下C语言监控软件容错的方法,首先对通用的监控软件的处理流程做一个说明。监控软件(main)是一个根据一定的定时规则,无限循环执行的程序。要保证监控软件的持久性运行,需要监控核心代码(monitor)足够的稳定,不出差错。但随着代码的复杂度增加,出错的几率逐渐变大,特别是一些偶发性的、复现率低的错误。这些错误,如浮点运算除以0,就会导致监控程序出错退出。下面表格中的代码,是本实施例的代码框架。以其为例进行本发明容错方法的描述。
如图1所示,一种嵌入式Linux系统下C语言监控软件容错的方法,包括以下步骤:
(1)监控软件开始运行;
(2)代码是否满足监控条件,如果满足进入步骤(3),若不满足,退出监控;
(3)进行注册信 处理;
(4)检测信 ,检测是否存在错误信 ,如果不能检测到错误信 ,执行正常监控流程,进入步骤(5),如果检测到错误信 ,则执行错误处理,跳转至步骤(2);
(5)监控主体是否产生错误信 ,如果产生错误信 ,进行信 处理,并跳转至步骤(4),如果没有产生错误信 ,则跳转至步骤(2)重新开始监控流程。
其中,步骤(3)进行注册信 处理,对应示例代码的signal函数。如果为注册信 处理,一旦出错,程序就会退出,linux会弹出一个信息。注册信 处理后,发生错误后,首先由程序自己进行这些错误处理,自己处理不了时,才会被Linux操作系统处理。为保证程序不退出,至少应该对SIGSEGV、SIGFPE、SIGABRT注册信 处理。signal_hdl就是注册的信 处理函数。
步骤(4)中的检测信 对应示例代码中的sigsetjmp函数。这是一个选择结构,如果没有检测到信 ,则执行正常监控(monitor)流程;如果检测到信 ,则执行错误处理。在错误处理中,可以记录错误发生的时间,另外可以记录一些全局变量,以大体定位错误发生的位置。
步骤(5)中的信 处理操作对应示例代码中的signal_hdl函数。信 处理的主要目的是,将中断的程序流程跳转(siglongjmp),重新回到监控流程,而不是接收到信 后,就使监控程序退出。另外,可以在信 处理函数中,增加日志操作,对信 的类型等进行记录,作为bug分析日志的一部分。
如图2所示,本发明还提供了一种用于实现上述容错方法的系统,该系统集中于嵌入式Linux系统的操作核心层,包括监控管理模块4,以及与其相连接的进程管理模块1、信 处理模块2、错误处理模块3,所述进程管理模块1、信 处理模块2、错误处理模块3依次连接,其中:
(1)进程管理模块1,该模块用于实现监控过程周期管理,包括监控进程的创建、调度、通信,使得原生进程在有序执行原有逻辑的同时,满足C语言容错监控的需要;
(2)信 处理模块2,该模块用于实现注册信 检测以及信 处理,注册信 检测到错误后,首先程序自行进行处理,无法解决时进入Linux操作系统处理;信 处理模块将终端的程序流程跳转,重新回到监控流程中;
(3)错误处理模块3,该模块用于实现错误类型诊断以及根据预配置采取相应错误处理方式,完成错误修复;
(4)监控管理模块4,包括总控制端41以及内部管理端42,总控制端41提供给用户可视的操作界面,内部管理端42与总控制端41进行交互,使得用户可在总控制端41查看监控软件运行状态,容错日志,对系统各项参数进行预配置。
本发明提供的一种嵌入式Linux环境下C语言监控软件容错的方法,通过在C语言中实现类似C++中的try catch结构,在监控软件中第一时间捕获错误,并对错误进行处理,避免程序发生崩溃,从而使得监控软件具有更强的容错性。能使得监控软件在遇到段错误、浮点运算错误、退出错误的情况下,保证监控程序的循环过程一直执行,并能够在错误处理过程里对错误信息、错误发生的位置进行记录,以便于错误的分析。方案中还提供了用于实现该方法的系统设计,该系统基于C语言监控软件的容错策略和方法,实现了对监控过程中错误程序的处理,性能损耗小,有效提高了系统的操作可靠性,避免了硬件定制的复杂性。
上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览115766 人正在系统学习中 相关资源:克隆软件下载-其它工具类资源
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!