CN101299677A - 一种多进程共享同一服务进程的方法 - Google Patents
一种多进程共享同一服务进程的方法 Download PDFInfo
- Publication number
- CN101299677A CN101299677A CNA2008100892944A CN200810089294A CN101299677A CN 101299677 A CN101299677 A CN 101299677A CN A2008100892944 A CNA2008100892944 A CN A2008100892944A CN 200810089294 A CN200810089294 A CN 200810089294A CN 101299677 A CN101299677 A CN 101299677A
- Authority
- CN
- China
- Prior art keywords
- service processes
- monitoring
- service
- program process
- processes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种多进程共享同一服务进程的方法,该方法包括:应用程序进程确定启动服务进程时,检查多进程共享内存区中服务进程状态是否为启动,若是则直接使用所述服务进程;若否则启动所述服务进程,将所述服务进程的状态标识为启动。本发明所提供的多进程共享同一服务进程的方法,能够使服务进程自动启动和停止,并能够解决启动多个服务进程时端口使用冲突问题,且启动服务进程时无需遍历系统确定是否已经存在该服务进程,方法简单且易于实施。
Description
技术领域
本发明涉及无线网络管理技术,尤其涉及一种多进程共享同一服务进程的方法。
背景技术
本地维护终端(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为本发明多进程共享同一服务进程的方法流程示意图,如图1所示,该方法包括:
步骤101:启动应用程序进程时,确定是否存在多进程共享内存区,如果不存在,则执行步骤104;如果存在,执行步骤102。
本步骤中创建的所述多进程共享内存区用于记录服务进程状态,可以通过设置一个服务进程状态项完成,所述服务进程状态项可以设置为启动和停止两种状态,分别标识服务进程的状态为启动、停止。所述启动和停止两种状态的状态值可以设置为有实际意义的数值,比如将启动状态的状态值设置为服务进程的进程号,它是个非零值,将停止状态的状态值设定为零值。这样做就可以直接获得服务进程的进程号,从而使用服务进程,而不用去系统中搜索服务进程。
其中,具体如何启动所述应用程序进程、以及如何创建共享内存区属于公知技术,这里不再赘述。
步骤102:检查多进程共享内存区中服务进程状态是否为启动,如果是,执行步骤103;如果否,执行步骤105。
其中,应用程序进程创建所述多进程共享内存区的同时,也会提供访问所述多进程共享内存区的接口,所以,在检查所述多进程共享内存区时,可以使用所述接口进行检查。
步骤103:直接使用服务进程,当前处理流程结束。
步骤104:应用程序进程创建多进程共享内存区,添加服务进程状态项,将所述服务进程的状态标识为停止,执行步骤105。
步骤105:启动服务进程,并将多进程共享内存区中的服务进程状态标识为启动,之后,分别执行步骤106和步骤109。
步骤106:创建共享该服务进程的应用程序进程监测线程,执行步骤107。
其中,所述应用程序进程的监测线程用于监测是否存在共享该服务进程的应用程序进程。具体如何创建监测线程,根据本发明所述方法所应用的平台不同而改变,例如,如果是windows平台,可以使用CreateThread函数来创建。在各种平台下如何创建监测线程属于公知技术,这里不再赘述。
其中,所述应用程序进程的监测线程一般由服务进程创建。
步骤107:监测是否存在共享该服务进程的应用程序进程,如果是,继续进行所述监测;否则,执行步骤108。
其中,步骤107中,判断是否存在共享服务进程的应用程序进程的方法可以为:设置一个使用者列表,所述使用者列表可以由所述应用程序进程的监测线程进行维护,当应用程序进程使用服务进程时,会向服务进程发送消息,所述应用程序进程的监测线程从消息中得到应用程序进程对应的进程号,将所述进程号存储于使用者列表中;当应用程序进程的监测线程每隔周期时间进行监测时,向使用者列表中的每一个应用程序进程发消息,以判断这些进程是否已经退出,如果退出,则从使用者列表中把相应的进程号删除,如果最后使用者列表为空,则表明当前无应用程序进程在使用服务进程,这时,即可停止服务进程。其中,应用程序进程与服务进程之间如何通过所述消息进行通信属于公知技术,这里不再赘述。
步骤108:终止监测线程,并停止服务进程,当前处理流程结束。
其中,对于步骤107和步骤108,应用程序进程的监测线程在监测是否存在应用程序进程时,也可以不时刻监测,而是进行周期性监测,即:每隔一定的时间,监测是否存在使用服务进程的应用程序进程,如果存在,监测线程休眠一定的时间,等待下一监测周期到来时再次触发,进行所述监测;如果不存在,则终止监测线程,并停止服务进程,当前处理流程结束。进行周期性监测时,监测周期的时间长度可以根据实际情况自主设定。但是,如果周期时间设置过长,则可能所有使用该服务进程的应用程序进程退出后,服务进程还要运行一段时间才能够停止,这样,会浪费系统资源,实时性较低;如果周期时间设置过短,会浪费CPU时间,但实时性较高。鉴于应用程序进程被用户启动和关闭的频率较低,而且本发明所提供的方法对实时性要求并不太高,所以,所述周期时间可以设置的相对较长,例如,可以设定为800ms、1000ms或1200ms等。
步骤109:创建服务进程的监测线程,执行步骤110。
所述服务进程的监测线程用于监测所述服务进程是否运行异常。该监测线程一般由应用程序进程创建,具体实现时,可以在每个应用程序进程启动时,均创建该应用程序进程所使用的服务进程的监测线程,也可以仅由启动服务进程的应用程序进程创建一个监测线程,本发明不作限制。
步骤110:监测服务进程运行是否异常,如果是,执行步骤111;否则,继续进行服务进程运行是否异常的监测。
其中,本步骤中对服务进程运行异常的监测,也可以进行周期性监测,方法与步骤104中所述周期性监测应用程序进程的方法相似,这里不再赘述。
步骤111:停止服务进程,将多进程共享内存区中服务进程状态标识为停止,并返回执行步骤105。
其中,对于图1所示的多进程共享同一服务进程的方法,如果并非由应用程序进程启动服务进程,而是由用户启动服务进程时,步骤101应修改为:判断是否存在应用程序进程,如果存在,执行步骤102,否则,退出服务进程的启动过程。
或者,在执行步骤110和步骤111的监测过程中,也可以由用户在存在服务进程异常,直接确定重启动服务进程;或者,希望中止服务进程时,直接确定停止服务进程。并且,在用户确定停止服务进程时,也可以判断是否有其他应用程序进程在使用服务进程,如果有,向用户进行提示,以确认是否停止服务进程。
图1所示的方法中,所述服务进程可以为FTP服务进程。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (6)
1、一种多进程共享同一服务进程的方法,其特征在于,该方法包括:
应用程序进程确定启动服务进程时,检查多进程共享内存区中服务进程状态是否为启动,若是,则直接使用所述服务进程;若否,则启动所述服务进程,将所述服务进程的状态标识为启动。
2、根据权利要求1所述的方法,其特征在于,所述确定启动服务进程之前,该方法进一步包括:
所述应用程序进程启动时,确定是否存在多进程共享内存区,不存在时创建多进程共享内存区,添加服务进程状态项,并将所述服务进程的状态标识为停止。
3、根据权利要求1或2所述的方法,其特征在于,启动服务进程后,该方法进一步包括:
创建共享同一服务进程的应用程序进程的监测线程,监测到共享同一服务进程的所有应用程序进程执行完毕时,终止所述监测线程,停止所述服务进程。
4、根据权利要求3所述的方法,其特征在于,启动服务进程后,该方法进一步包括:
创建服务进程的监测线程,监测到所述服务进程运行异常时停止所述服务进程,将所述服务进程的状态标识为停止;重新启动所述服务进程,将所述服务进程的状态标识为启动。
5、根据权利要求4所述的方法,其特征在于,该方法还包括:
为所述共享同一服务进程的应用程序进程的监测线程及所述服务进程的监测线程设置监测周期,监测线程在每一监测周期到来时被触发。
6、根据权利要求5所述的方法,其特征在于,所述监测周期为800ms、1000ms或1200ms。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100892944A CN101299677B (zh) | 2008-04-30 | 2008-04-30 | 一种多进程共享同一服务进程的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100892944A CN101299677B (zh) | 2008-04-30 | 2008-04-30 | 一种多进程共享同一服务进程的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101299677A true CN101299677A (zh) | 2008-11-05 |
CN101299677B CN101299677B (zh) | 2010-12-01 |
Family
ID=40079373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100892944A Expired - Fee Related CN101299677B (zh) | 2008-04-30 | 2008-04-30 | 一种多进程共享同一服务进程的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101299677B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012843A (zh) * | 2010-11-19 | 2011-04-13 | 曙光信息产业(北京)有限公司 | 任务迁移系统 |
CN102147751A (zh) * | 2011-04-26 | 2011-08-10 | 北京新媒传信科技有限公司 | 一种多进程间的通信方法 |
CN104065626A (zh) * | 2013-03-21 | 2014-09-24 | 杭州海康威视数字技术股份有限公司 | 网络摄像机登录状态的更新方法及装置 |
CN105592045A (zh) * | 2015-08-24 | 2016-05-18 | 杭州华三通信技术有限公司 | 分布式系统中的服务连接方法及装置 |
CN106406845A (zh) * | 2015-08-03 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 一种任务处理方法及装置 |
CN106488297A (zh) * | 2016-10-21 | 2017-03-08 | 广州酷狗计算机科技有限公司 | 一种显示图像数据的方法和装置 |
CN106598767A (zh) * | 2016-11-29 | 2017-04-26 | 积成电子股份有限公司 | 基于看门狗技术的智能变电站监控服务控制台实现方法 |
CN106897146A (zh) * | 2017-02-09 | 2017-06-27 | 青岛海信移动通信技术股份有限公司 | 一种终端的麦克风的数据处理方法和具有麦克风的终端 |
CN109947542A (zh) * | 2019-01-25 | 2019-06-28 | 上海倍通医药科技咨询有限公司 | 数据采集程序的综合进程调度方法 |
CN113687929A (zh) * | 2021-08-24 | 2021-11-23 | 济南浪潮数据技术有限公司 | 一种异常处理方法及相关装置 |
CN115629827A (zh) * | 2022-12-22 | 2023-01-20 | 中国西安卫星测控中心 | 一种基于共享内存的Linux服务器多应用进程调度方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE500940C2 (sv) * | 1993-02-10 | 1994-10-03 | Ellemtel Utvecklings Ab | Sätt och system för att i ett distribuerat operativsystem demontera en kedja av sammanlänkade processer |
CN1328877C (zh) * | 2001-12-03 | 2007-07-25 | 中兴通讯股份有限公司 | 共享线程实现和调度方法 |
CN1175351C (zh) * | 2001-12-04 | 2004-11-10 | 上海复旦光华信息科技股份有限公司 | Solaris进程自动保护系统 |
-
2008
- 2008-04-30 CN CN2008100892944A patent/CN101299677B/zh not_active Expired - Fee Related
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012843A (zh) * | 2010-11-19 | 2011-04-13 | 曙光信息产业(北京)有限公司 | 任务迁移系统 |
CN102147751A (zh) * | 2011-04-26 | 2011-08-10 | 北京新媒传信科技有限公司 | 一种多进程间的通信方法 |
CN102147751B (zh) * | 2011-04-26 | 2012-11-21 | 北京新媒传信科技有限公司 | 一种多进程间的通信方法 |
CN104065626A (zh) * | 2013-03-21 | 2014-09-24 | 杭州海康威视数字技术股份有限公司 | 网络摄像机登录状态的更新方法及装置 |
CN104065626B (zh) * | 2013-03-21 | 2018-03-23 | 杭州海康威视数字技术股份有限公司 | 网络摄像机登录状态的更新方法及装置 |
CN106406845A (zh) * | 2015-08-03 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 一种任务处理方法及装置 |
CN105592045A (zh) * | 2015-08-24 | 2016-05-18 | 杭州华三通信技术有限公司 | 分布式系统中的服务连接方法及装置 |
CN105592045B (zh) * | 2015-08-24 | 2019-04-12 | 新华三技术有限公司 | 分布式系统中的服务连接方法及装置 |
CN106488297A (zh) * | 2016-10-21 | 2017-03-08 | 广州酷狗计算机科技有限公司 | 一种显示图像数据的方法和装置 |
CN106488297B (zh) * | 2016-10-21 | 2019-01-22 | 广州酷狗计算机科技有限公司 | 一种显示图像数据的方法和装置 |
CN106598767B (zh) * | 2016-11-29 | 2019-07-09 | 积成电子股份有限公司 | 基于看门狗技术的智能变电站监控服务控制台实现方法 |
CN106598767A (zh) * | 2016-11-29 | 2017-04-26 | 积成电子股份有限公司 | 基于看门狗技术的智能变电站监控服务控制台实现方法 |
CN106897146A (zh) * | 2017-02-09 | 2017-06-27 | 青岛海信移动通信技术股份有限公司 | 一种终端的麦克风的数据处理方法和具有麦克风的终端 |
CN109947542A (zh) * | 2019-01-25 | 2019-06-28 | 上海倍通医药科技咨询有限公司 | 数据采集程序的综合进程调度方法 |
CN113687929A (zh) * | 2021-08-24 | 2021-11-23 | 济南浪潮数据技术有限公司 | 一种异常处理方法及相关装置 |
CN115629827A (zh) * | 2022-12-22 | 2023-01-20 | 中国西安卫星测控中心 | 一种基于共享内存的Linux服务器多应用进程调度方法 |
CN115629827B (zh) * | 2022-12-22 | 2023-03-10 | 中国西安卫星测控中心 | 一种基于共享内存的Linux服务器多应用进程调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101299677B (zh) | 2010-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101299677B (zh) | 一种多进程共享同一服务进程的方法 | |
CN101799751B (zh) | 一种构建主机监控代理软件的方法 | |
CN109039518B (zh) | Android电视系统的NTP服务器地址智能管理方法 | |
CN108123820B (zh) | 一种网络设备信息采集方法和装置 | |
CN102064964B (zh) | 一种千兆交换环境下千兆网卡的快速切换方法 | |
CN110764801A (zh) | 一种高速电力线载波远程升级方法及装置 | |
CN102207888A (zh) | 定时器管理方法和装置 | |
CN105357273A (zh) | 异步通信模式下socket通信与进程管理通用平台及方法 | |
CN109041023B (zh) | 一种蓝牙设备测试方法及系统 | |
CN103139245A (zh) | 网元升级方法及装置 | |
CN100373341C (zh) | 一种业务进程的分布式分优先级监控方法 | |
CN103516735A (zh) | 一种网络节点升级的方法及装置 | |
CN104683171A (zh) | 应用软件的实时监控方法及装置 | |
CN102567062A (zh) | 基于监控车辆的软件升级系统 | |
CN103716861B (zh) | 网络搜寻方法及使用此方法的移动电子装置 | |
CN110262920A (zh) | Linux系统外置看门狗间接喂狗方法、看门狗喂狗代理驱动模块、看门狗系统 | |
CN101169758A (zh) | 一种Linux操作系统进程调度信息的监测方法 | |
WO2015154578A1 (zh) | 单板的boot程序远程升级方法、装置及系统 | |
CN106534259B (zh) | 基于Docker的Web数据采集方法、Web服务器及Web数据采集系统 | |
JP2007199829A5 (zh) | ||
CN101833585A (zh) | 数据库服务器操作控制系统、方法及设备 | |
CN109245979B (zh) | 一种CANopen主从站可靠性控制方法及其统筹管理器 | |
CN112261512B (zh) | 非平衡轮询协议的主站遥控方法、装置、存储介质和设备 | |
CN106844148B (zh) | 一种虚拟机启动进度监控方法及装置 | |
CN101090511B (zh) | 一种吊死资源的释放方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101201 Termination date: 20190430 |
|
CF01 | Termination of patent right due to non-payment of annual fee |