一种多进程共享同一服务进程的方法

文档序号:7690713阅读:104来源:国知局
专利名称:一种多进程共享同一服务进程的方法
技术领域
本发明涉及无线网络管理技术,尤其涉及一种多进程共享同 一服务进程的 方法。
背景技术
本地维护终端(LMT, Local Maintenance Terminal)是无线网络管理中的 重要组成部分,以使用方便、部署灵活、功能强大等特点在无线网络中发挥着 巨大作用。
从本质上讲,LMT最重要的功能是与基站进行通信。通信内容包括LMT 将新的软件版本或配置数据传递到基站、基站将收集的重要数据传递给LMT 等。通常,上述通信过程会涉及到大量数据的传递。现有数据传递的实现方式 一般通过使用文件传输协议(FTP, File Transfer Protocol)服务进程完成。使用 FTP服务进程一般包括如下两种方式
一种方式是将FTP服务进程作为独立的应用程序进程。这种方式的缺点是 需要用户手动启动FTP服务进程,而且,只有在LMT搜索到系统中已启动的 FTP服务进程后,才可以使用所述FTP服务进程。
另 一种方式是将FTP服务进程集成到应用程序进程如LMT程序中。这种 方式便于程序的部署,而且,FTP服务进程可以随应用程序进程自动地启动和 关闭。然而,在这种方式下启动FTP服务进程时, 一般需要遍历系统中的所有 进程,以查看是否已有该FTP服务进程,查找成功后才能直接使用。而当用户 启动多个LMT程序,常常会因端口占用而致使一些LMT程序启动FTP服务进 程失败。

发明内容
有鉴于此,本发明的主要目的在于提供一种多进程共享同一服务进程的方 法,能够使服务进程自动启动和停止,并能够解决启动多个服务进程时端口使 用冲突问题,且启动服务进程时无需遍历系统确定是否已经存在该服务进程, 方法简单且易于实施。
为达到上述目的,本发明的技术方案是这样实现的
本发明提供了 一种多进程共享同 一服务进程的方法,该方法包括
应用程序进程确定启动服务进程时,检查多进程共享内存区中服务进程状
态是否为启动,若是,则直接使用所述服务进程;若否,则启动所述服务进程,
将所述服务进程的状态标识为启动。
其中,所述确定启动服务进程之前,该方法进一步包括 所述应用程序进程启动时,确定是否存在多进程共享内存区,不存在时创
建多进程共享内存区,添加服务进程状态项,并将所述服务进程的状态标识为停止。
启动服务进程后,该方法进一步包括
创建共享同 一服务进程的应用程序进程的监测线程,监测到共享同 一服务 进程的所有应用程序进程执行完毕时,终止所述监测线程,停止所述服务进程。 启动服务进程后,该方法进一步包括
创建服务进程的监测线程,监测到所述服务进程运行异常时停止所述服务 进程,将所述服务进程的状态标识为停止;重新启动所述服务进程,将所述服 务进程的状态标识为启动。
该方法还包括
为所述共享同 一服务进程的应用程序进程的监测线程及所述服务进程的监 测线程设置监测周期,监测线程在每一监测周期到来时被触发。 所述监测周期为800ms、 1000ms或1200ms。
本发明所提供的多进程共享同 一服务进程的方法,服务进程可以随应用程序的启动而启动,不需遍历系统中是否已经存在该服务进程,且避免了用户的
手动启动;而且,服务进程启动后,通过创建监测线程来监测是否存在使用服 务进程的应用程序进程、或服务进程是否运行异常等,根据监测结果而自动停 止服务进程的运行、重启动服务进程等,方法简便,易于实现。
同时,本发明所提供的多进程共享同 一进程的方法使用了多进程共享内存 区来指示服务进程的状态,很好地解决了自动启动多个服务进程时端口使用冲 突问题。


图1为本发明多进程共享同一服务进程的方法流程示意图。
具体实施例方式
本发明的基本思想是确定启动服务进程时,根据多进程共享内存区中服 务进程状态,确定服务进程是否启动,如果是,则直接使用服务进程;否则, 启动服务进程。
以下,通过具体实施例结合附图详细说明本发明多进程共享同 一服务进程 方法的实现。
图1为本发明多进程共享同一服务进程的方法流程示意图,如图l所示, 该方法包4舌
步骤101:启动应用程序进程时,确定是否存在多进程共享内存区,如果 不存在,则执行步骤104;如果存在,执行步骤102。
本步骤中创建的所述多进程共享内存区用于记录服务进程状态,可以通过 设置一个服务进程状态项完成,所述服务进程状态项可以设置为启动和停止两 种状态,分别标识服务进程的状态为启动、停止。所述启动和停止两种状态的 状态值可以设置为有实际意义的数值,比如将启动状态的状态值设置为服务进 程的进程号,它是个非零值,将停止状态的状态值设定为零值。这样做就可以 直接获得服务进程的进程号,从而使用服务进程,而不用去系统中搜索服务进程。
其中,具体如何启动所述应用程序进程、以及如何创建共享内存区属于公 知技术,这里不再赘述。
步骤102:检查多进程共享内存区中服务进程状态是否为启动,如果是, 执行步骤103;如果否,执行步骤105。
其中,应用程序进程创建所述多进程共享内存区的同时,也会提供访问所 述多进程共享内存区的接口,所以,在检查所述多进程共享内存区时,可以使 用所述接口进行检查。
步骤103:直接使用服务进程,当前处理流程结束。
步骤104:应用程序进程创建多进程共享内存区,添加服务进程状态项, 将所述服务进程的状态标识为停止,执行步骤105。
步骤105:启动Ji良务进程,并将多进程共享内存区中的服务进程状态标识 为启动,之后,分别执行步骤106和步骤109。
步骤106:创建共享该服务进程的应用程序进程监测线程,执行步骤107。
其中,所述应用程序进程的监测线程用于监测是否存在共享该服务进程的 应用程序进程。具体如何创建监测线程,根据本发明所述方法所应用的平台不 同而改变,例如,如果是windows平台,可以使用CreateThread函数来创建。 在各种平台下如何创建监测线程属于公知技术,这里不再赘述。
其中,所述应用程序进程的监测线程一般由服务进程创建。
步骤107:监测是否存在共享该服务进程的应用程序进程,如果是,继续 进行所述监测;否则,执行步骤108。
其中,步骤107中,判断是否存在共享服务进程的应用程序进程的方法可 以为设置一个使用者列表,所述使用者列表可以由所述应用程序进程的监测 线程进行维护,当应用程序进程使用服务进程时,会向服务进程发送消息,所 述应用程序进程的监测线程从消息中得到应用程序进程对应的进程号,将所述 进程号存储于使用者列表中;当应用程序进程的监测线程每隔周期时间进行监 测时,向使用者列表中的每一个应用程序进程发消息,以判断这些进程是否已经退出,如果退出,则从使用者列表中把相应的进程号删除,如果最后使用者 列表为空,则表明当前无应用程序进程在使用服务进程,这时,即可停止服务 进程。其中,应用程序进程与服务进程之间如何通过所述消息进行通信属于公 知技术,这里不再赘述。
步骤108:终止监测线程,并停止服务进程,当前处理流程结束。 其中,对于步骤107和步骤108,应用程序进程的监测线程在监测是否存 在应用程序进程时,也可以不时刻监测,而是进行周期性监测,即每隔一定 的时间,监测是否存在使用服务进程的应用程序进程,如果存在,监测线程休 眠一定的时间,等待下一监测周期到来时再次触发,进^"所述监测;如果不存 在,则终止监测线程,并停止服务进程,当前处理流程结束。进行周期性监测 时,监测周期的时间长度可以根据实际情况自主设定。但是,如果周期时间设 置过长,则可能所有使用该服务进程的应用程序进程退出后,服务进程还要运 行一段时间才能够停止,这样,会浪费系统资源,实时性较低;如果周期时间 设置过短,会浪费CPU时间,但实时性较高。鉴于应用程序进程被用户启动和 关闭的频率较低,而且本发明所提供的方法对实时性要求并不太高,所以,所 述周期时间可以i殳置的相对專交长,例如,可以i殳定为800ms、 1000ms或1200ms 等。
步骤109:创建服务进程的监测线程,执行步骤IIO。
所述服务进程的监测线程用于监测所述服务进程是否运行异常。该监测线 程一般由应用程序进程创建,具体实现时,可以在每个应用程序进程启动时, 均创建该应用程序进程所使用的服务进程的监测线程,也可以仅由启动服务进 程的应用程序进程创建一个监测线程,本发明不作限制。
步骤110:监测服务进程运行是否异常,如果是,执行步骤lll;否则,继 续进行服务进程运行是否异常的监测。
其中,本步骤中对服务进程运行异常的监测,也可以进行周期性监测,方 法与步骤104中所述周期性监测应用程序进程的方法相似,这里不再赘述。
步骤111:停止服务进程,将多进程共享内存区中服务进程状态标识为停止,并返回执行步骤105。
其中,对于图1所示的多进程共享同一服务进程的方法,如果并非由应用 程序进程启动服务进程,而是由用户启动服务进程时,步骤101应修改为判 断是否存在应用程序进程,如果存在,执行步骤102,否则,退出服务进程的 启动过程。
或者,在执行步骤110和步骤111的监测过程中,也可以由用户在存在服 务进程异常,直接确定重启动服务进程;或者,希望中止服务进程时,直接确 定停止服务进程。并且,在用户确定停止服务进程时,也可以判断是否有其他 应用程序进程在使用服务进程,如果有,向用户进行提示,以确认是否停止服 务进程。
图l所示的方法中,所述服务进程可以为FTP服务进程。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1. 一种多进程共享同一服务进程的方法,其特征在于,该方法包括应用程序进程确定启动服务进程时,检查多进程共享内存区中服务进程状态是否为启动,若是,则直接使用所述服务进程;若否,则启动所述服务进程,将所述服务进程的状态标识为启动。
2、 根据权利要求1所述的方法,其特征在于,所述确定启动服务进程之前, 该方法进一步包括所述应用程序进程启动时,确定是否存在多进程共享内存区,不存在时创 建多进程共享内存区,添加服务进程状态项,并将所述服务进程的状态标识为 停止。
3、 根据权利要求1或2所述的方法,其特征在于,启动服务进程后,该方 法进一步包括创建共享同 一服务进程的应用程序进程的监测线程,监测到共享同 一服务 进程的所有应用程序进程执行完毕时,终止所述监测线程,停止所述服务进程。
4、 根据权利要求3所述的方法,其特征在于,启动服务进程后,该方法进 一步包括创建服务进程的监测线程,监测到所述服务进程运行异常时停止所述服务 进程,将所述服务进程的状态标识为停止;重新启动所述服务进程,将所述服 务进程的状态标识为启动。
5、 根据权利要求4所述的方法,其特征在于,该方法还包括为所述共享同 一服务进程的应用程序进程的监测线程及所述服务进程的监 测线程设置监测周期,监测线程在每一监测周期到来时被触发。
6、 根据权利要求5所述的方法,其特征在于,所述监测周期为800ms、 1000ms或1200ms。
全文摘要
本发明公开了一种多进程共享同一服务进程的方法,该方法包括应用程序进程确定启动服务进程时,检查多进程共享内存区中服务进程状态是否为启动,若是则直接使用所述服务进程;若否则启动所述服务进程,将所述服务进程的状态标识为启动。本发明所提供的多进程共享同一服务进程的方法,能够使服务进程自动启动和停止,并能够解决启动多个服务进程时端口使用冲突问题,且启动服务进程时无需遍历系统确定是否已经存在该服务进程,方法简单且易于实施。
文档编号H04L29/08GK101299677SQ20081008929
公开日2008年11月5日 申请日期2008年4月30日 优先权日2008年4月30日
发明者岳亚力, 琼 李 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1