一种软件开发中主进程异常检测方法与流程

文档序号:12719186阅读:347来源:国知局
一种软件开发中主进程异常检测方法与流程

本发明属于计算机数据处理技术领域,特别涉及一种软件开发中进程异常的检测方法。



背景技术:

软件开发中经常需要维持某个进程(比如服务器进程)长期稳定地工作,但是不可避免地经常会出现进程异常退出的问题。为了解决这个问题,目前软件开发时采用的方法是利用一个守护进程一直看护主进程,如图1所示,守护进程定时扫描主进程是否存在,如果主进程不存在,就重新启动主进程。

但是,目前的看护方式存在着不足,如果主进程不是退出,而是线程挂起(程序死掉)或运行异常,守护进程认为程序没有退出,误以为还在正常工作,而实际上主进程已经异常出错,也即,现有的主进程看护方式无法解决这类实际存在的问题,有待改进。



技术实现要素:

本发明的目的,在于提供一种软件开发中主进程异常检测方法,其不但可以保证主进程退出时立即重启主进程,更可以解决主进程的线程挂起或运行异常导致无法正常工作的问题。

为了达成上述目的,本发明的解决方案是:

一种软件开发中主进程异常检测方法,包括如下步骤:

步骤1,主进程在启动时,同时启动守护进程守护其运行,并创建一个唯一的全局互斥体;

步骤2,守护进程定时检测主进程的全局互斥体是否存在,若存在则转步骤3,若不存在则守护进程重新启动主进程;

步骤3,守护进程定时向主进程发送消息,询问主进程的工作状态,守护进程向主进程发送消息后,判断在设定时间内是否收到主进程应答,若收到主进程工作状态正常的应答,表示主进程工作状态正常,守护进程继续保持定时询问;若在设定时间内未收到主进程应答,继续定时向主进程发送询问消息,如果持续n次都未收到主进程应答,n为自然数,或收到主进程工作状态异常的应答,则认为主进程当前工作状态异常,守护进程杀掉主进程,并重新启动主进程。

上述方法中,还设定主进程在合法退出前,先杀掉守护进程。

上述步骤1中,主进程通过用户手动启动或开机自动启动。

上述步骤2中,守护进程检测主进程的全局互斥体是否存在的方法是,守护进程与主进程约定一个全局唯一的互斥体名称,守护进程验证与互斥体名称对应的全局互斥体是否存在,若存在则判定主进程存在。

上述步骤2中,检测周期为一秒。

上述步骤3中,主进程开辟专用线程与守护进程进行通信。

上述步骤3中,守护进程发送消息的发送间隔设定为一秒。

采用上述方案后,本发明中的守护进程不但监控主进程是否退出,还定时与主进程保持通讯状态。即守护进程定时向主进程发消息,询问主进程工作状态是否正常,主进程收到消息时应答守护进程,告知主进程当前工作状态。如果守护进程没收到主进程的应答消息,或主进程告诉守护进程自己当前工作状态异常,守护进程杀掉主进程并重启主进程,让主进程恢复正常工作。

附图说明

图1是现有进程看护方式的流程图;

图2是本发明的流程图。

具体实施方式

以下将结合附图,对本发明的技术方案进行详细说明。

如图2所示,本发明提供一种软件开发中主进程异常检测方法,包括如下步骤:

步骤1,用户手动启动主进程,或设置开机自动启动主进程时,主进程同时启动守护进程守护其运行,并创建一个唯一的全局互斥体;所谓的互斥体就是主进程创建的一个全局标识,互斥体随着主进程创建而创建,随着主进程关闭而关闭,并且每个互斥体都有一个唯一的名称,所以其他进程可以通过检查这个主进程对应的互斥体是否存在,来确定主进程是否有实例在运行;

步骤2,守护进程定时检测全局互斥体是否存在,从而确定主进程是否存在,在本实施例中,检测方法是:守护进程与主进程约定一个全局唯一的互斥体名称,因为互斥体随主进程创建而创建,随主进程关闭而关闭,所以守护进程只要验证跟互斥体名称对应的全局互斥体是否存在,就能确定主进程实例是否存在,并设定检测周期为一秒;若守护进程判断全局互斥体存在,则转步骤3,若守护进程判断全局互斥体不存在,表示主进程已退出,则守护进程重新启动主进程;为了避免主进程在执行完任务需要正常退出时,被守护进程看住导致无法正常退出,设定主进程在合法退出前,需要先杀掉守护进程;

步骤3,守护进程定时向主进程发送消息,询问主进程的工作状态,在本实施例中,设定发送间隔为一秒;主进程专门开辟一个线程用于与守护进程通信,以免因为处理其他业务导致与守护进程通信不及时。守护进程向主进程发送消息后,判断在设定时间内(一般设定为一秒)是否收到主进程应答,若收到主进程工作状态正常的应答,表示主进程工作状态正常,守护进程继续保持定时询问;若在设定时间内未收到主进程应答,继续定时向主进程发送询问消息,如果持续三次都未收到主进程应答,或收到主进程工作状态异常的应答,则认为主进程当前工作状态异常,守护进程杀掉主进程,并重新启动主进程。

综合上述,本发明一种软件开发中主进程异常检测方法,针对目前软件开发中主进程存在,但主进程的线程挂起(程序死掉)或程序异常导致无法正常工作的情况,在守护进程与主进程之间建立通讯,以确定主进程是否处于正常工作状态。若主进程工作状态异常,守护进程杀死主进程并重新启动主进程,从而提高进程的可用性,提高进程工作效率。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1