一种组件运行方法及装置制造方法

文档序号:6634671阅读:166来源:国知局
一种组件运行方法及装置制造方法
【专利摘要】本申请提供了一种组件运行方法及装置,主进程当接收到调用程序发送的启动命令后,为每个组件单独创建一个对应的子进程,并启动各个子进程,进而利用启动成功的子进程完成调用程序与组件之间的数据通信。可见,每个组件分别对应一个子进程,当某个子进程出现调用失败时,并不会影响其他子进程与组件之间的数据通信,提高了组件运行的稳定性及调用效率。同时,本实施例可以在各种不同的系统平台上运行,如Linux或Window等,系统兼容性较好。
【专利说明】一种组件运行方法及装置

【技术领域】
[0001]本发明涉及软件【技术领域】,尤其是一种组件运行方法及装置。

【背景技术】
[0002]软件通常包括多个组件,在需要运行组件时,创建一个主进程,利用主进程与多个组件进行数据通信。具体地,外部程序可以调用软件中的组件,当需要调用时,向创建的主进程发送调用指令,该主进程与组件进行数据通信,即向组件发送数据或从所述组件处获取数据。然而,该种组件运行方式稳定性较差。


【发明内容】

[0003]有鉴于此,本申请提供了一种组件运行方式,用以解决现有技术中组件运行方式的稳定性差的技术问题。为实现所述目的,本发明提供的技术方案如下:
[0004]一种组件运行方法,包括:
[0005]当接收到调用程序发送的启动命令时,主进程获取每个组件各自的组件标识;
[0006]所述主进程创建每个所述组件标识各自对应的子进程,且所述主进程启动各个所述子进程;
[0007]所述主进程利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信;其中,所述目标组件为所述启动成功的子进程对应的组件。
[0008]上述组件运行方法,优选地,所述主进程利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信,包括:
[0009]所述主进程触发启动成功的子进程与目标组件进行数据通信;
[0010]所述主进程触发所述启动成功的子进程直接与所述调用程序进行数据通信。
[0011]上述组件运行方法,优选地,所述主进程利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信,包括:
[0012]所述主进程触发启动成功的子进程与目标组件进行数据通信;
[0013]所述主进程触发所述启动成功的子进程通过所述主进程与所述调用程序进行数据通信。
[0014]上述组件运行方法,优选地,在所述主进程启动各个所述子进程之后还包括:
[0015]所述主进程监测各个所述子进程是否启动成功;
[0016]当监测到启动失败的子进程时,所述主进程重新启动所述启动失败的子进程直至成功。
[0017]上述组件运行方法,优选地,还包括:
[0018]当接收到所述调用程序发送的退出命令时,所述主进程退出各个所述子进程。
[0019]上述组件运行方法,优选地,还包括:
[0020]所述主进程记录与各个所述启动成功的子进程未进行数据通信的持续时间;
[0021]当所述持续时间达到预设时长时,所述主进程退出与所述持续时间对应的子进程。
[0022]上述组件运行方法,优选地,还包括:
[0023]当子进程与各自对应组件数据通信失败时,输出该子进程的进程名。
[0024]本申请还提供了一种组件运行装置,包括:主进程模块,其中:所述主进程模块包括:
[0025]组件标识获取子模块,用于当接收到调用程序发送的启动命令时,获取每个组件各自的组件标识;
[0026]子进程创建启动子模块,用于创建每个所述组件标识各自对应的子进程,并启动各个所述子进程;
[0027]利用子进程通信子模块,用于利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信;其中,所述目标组件为所述启动成功的子进程对应的组件。
[0028]上述的组件运行装置,优选地,所述利用子进程通信子模块包括:
[0029]第一子进程通信单元,用于触发启动成功的子进程与目标组件进行数据通信,并触发所述启动成功的子进程直接与所述调用程序进行数据通信;
[0030]第二子进程通信单元,用于触发启动成功的子进程与目标组件进行数据通信,并触发所述启动成功的子进程通过所述主进程模块与所述调用程序进行数据通信。
[0031]上述的组件运行装置,优选地,所述主进程模块还包括:
[0032]子进程重启子模块,用于监测各个所述子进程是否启动成功,当监测到启动失败的子进程时,重新启动所述启动失败的子进程直至成功;
[0033]子进程第一退出子模块,用于当接收到所述调用程序发送的退出命令时,退出各个所述子进程;
[0034]子进程第二退出子模块,用于记录与各个所述启动成功的子进程未进行数据通信的持续时间,当所述持续时间达到预设时长时,退出与所述持续时间对应的子进程;
[0035]子进程打印模块,用于当子进程与各自对应组件数据通信失败时,输出该子进程的进程名。
[0036]由以上技术方案可知,本发明提供的组件运行方法及装置,主进程当接收到调用程序发送的启动命令后,为每个组件单独创建一个对应的子进程,并启动各个子进程,进而利用启动成功的子进程完成调用程序与组件之间的数据通信。可见,每个组件分别对应一个子进程,当某个子进程出现调用失败时,并不会影响其他子进程与组件之间的数据通信,提高了组件运行的稳定性及调用效率。同时,本实施例可以在各种不同的系统平台上运行,如Linux或Window等,系统兼容性较好。

【专利附图】

【附图说明】
[0037]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0038]图1为本发明实施例提供的组件运行方法的流程图;
[0039]图2为本发明实施例提供的组件运行方法的另一部分流程图;
[0040]图3为本发明实施例提供的组件运行方法的又一部分流程图;
[0041]图4为本发明实施例提供的组件运行方法的又一流程图;
[0042]图5为本发明实施例提供的组件运行装置的结构框图;
[0043]图6为本发明实施例提供的组件运行装置的另一部分结构框图;
[0044]图7为本发明实施例提供的组件运行装置的又一结构框图。

【具体实施方式】
[0045]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0046]参见图1,其示出了本发明实施例提供的组件运行方法的流程,具体包括以下步骤:
[0047]步骤SlOl:当接收到调用程序发送的启动命令时,主进程获取每个组件各自的组件标识。
[0048]本实施例中,调用程序需要调用组件时,向主进程发送启动命令。当主进程接收到该启动命令时,获取组件的组件标识。
[0049]步骤S102:所述主进程创建每个所述组件标识各自对应的子进程,且所述主进程启动各个所述子进程。
[0050]针对每个组件标识,主进程分别创建一个子进程。这样,每个组件各自对应一个子进程,该子进程用于与各自对应的组件进行数据通信。与现有技术中的组件运行方式相比,本实施例中,每个组件分别对应一个子进程,可以提高组件的调用效率。
[0051]并且,主进程创建各个子进程后并启动各个子进程。可见,各个子进程并不是独立的,其创建及启动均需要依赖主进程。
[0052]步骤S103:所述主进程利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信;其中,所述目标组件为所述启动成功的子进程对应的组件。
[0053]其中,调用程序需要调用各个组件,调用程序向主进程发送启动命令,进而主进程创建并启动各个子进程,并利用启动成功的子进程完成调用程序与组件之间的数据通信。需要说明,如果部分子进程并未启动成功,完成的仅是启动成功的子进程与各自对应组件之间的数据通信。其中,数据通信包括向组件发送数据,也包括从组件处获取数据。
[0054]现有技术中,调用程序需要调用各个组件时,利用一个单独的主进程完成与所有组件的通信,若主进程调用某个组件失败,会导致主进程的崩溃,从而无法调用其他的组件,运行稳定性较差。并且,该种运行方式中,组件的调用效率较低。然而,本实施例中,主进程当接收到调用程序发送的启动命令后,为每个组件单独创建一个对应的子进程,并启动各个子进程,进而利用启动成功的子进程完成调用程序与组件之间的数据通信。可见,每个组件分别对应一个子进程,当某个子进程出现调用失败时,并不会影响其他子进程与组件之间的数据通信,提高了组件运行的稳定性及效率。同时,本实施例可以在各种不同的系统平台上运行,如Linux或Window等,系统兼容性较好。
[0055]在上述实施例中,主进程利用子进程完成调用程序与目标组件间的数据通信的具体实现方式可以是以下任意一种。
[0056]其一,所述主进程触发启动成功的子进程与目标组件进行数据通信,所述主进程触发所述启动成功的子进程直接与所述调用程序进行数据通信。
[0057]具体地,主进程触发子进程单独完成调用程序与组件之间的数据通信。S卩,子进程被触发后,直接作为调用程序与组件之间的数据传输中介,也就是说,调用程序直接通过子进程与对应组件进行数据通信。如图2所示,子进程从组件处获取的数据直接发送到调用程序,或者,调用程序直接向子进程发送数据,子进程将该数据传输到组件中,从而实现调用程序与组件间的相互通信。
[0058]其二,所述主进程触发启动成功的子进程与目标组件进行数据通信,所述主进程触发所述启动成功的子进程通过所述主进程与所述调用程序进行数据通信。
[0059]其中,主进程也参加到调用过程中。即,主进程触发子进程与组件进行数据通信,但子进程需要通过主进程完成与调用程序间的数据通信。如图3所示,子进程从组件处获取的数据需要通过主进程传输到调用程序,或者,调用程序需要利用主进程向子进程发送数据,进而子进程将该数据发送到组件,实现调用程序与组件间的数据通信。
[0060]以上两种实现方式中,第一种实现方式主进程只是负责创建并启动子进程,子进程与调用程序之间直接进行数据传输,传输效率较高。第二种实现方式中子进程只需向主进程发送数据即可,并不需要均与外部调用程序进行数据通信,主进程作为各个子进程与外部调用程序交互的中介,隐藏各个子进程,调用程序只需与主进程交互即可,一方面子进程安全性较高,另一方面多个子进程的调用方式对调用程序来说是透明的,并不需要改进调用程序。
[0061]在上述各个实施例中,创建子进程时,需要创建的信息包括进程名及参数。其中,进程名用于区分不同的进程,参数包括进程端口、组件型号及进程运行的主机地址等。另夕卜,上述各个实施例中的组件为任意可以被调用的组件,例如可以是能与摄像设备相互通信的组件,用于获取摄像设备中的数据信息。
[0062]需要说明,对于启动失败的子进程,主进程可以进行监测并重启。具体地,参见图4,在上述图1所示实施例的步骤S102之后还可以包括:
[0063]步骤S104:所述主进程监测各个所述子进程是否启动成功,当监测到启动失败的子进程时,所述主进程重新启动所述启动失败的子进程直至成功。
[0064]其中,主进程启动子进程后,可以进一步监测各个子进程是否启动成功。若监测到启动失败的子进程时,主进程可以重启该子进程直至启动成功,从而保证各个子进程与组件之间的数据通信。
[0065]需要说明,在图4所示的实施例中,步骤S104在步骤S103之前执行,也就是说,需要将各个子进程都启动成功,再利用各个子进程进行数据通信。或者,步骤S104可以与步骤S103同时执行,即主进程一方面重启启动失败的子进程,还可以一方面利用现已启动成功的子进程实现调用程序与对应组件之间的数据通信。
[0066]子进程具有一定的活动周期,其可以被主程序退出。可选地,主进程可以在调用结束后,结束子进程。即:
[0067]当接收到所述调用程序发送的退出命令时,所述主进程退出各个所述子进程。具体地,在调用组件结束时,调用程序会发送退出命令,主进程接收到退出命令时,结束各个子进程。
[0068]另外,主进程还可以监测子进程的活动时间,当某个子进程并未活动且达到一定时间阈值后,则可被退出。即:
[0069]所述主进程记录与各个所述启动成功的子进程未进行数据通信的持续时间;当所述持续时间达到预设时长时,所述主进程退出与所述持续时间对应的子进程。
[0070]当然,主进程结束子进程的方式并不局限于此,还可以是主进程退出时,退出各个子进程。此外,退出子进程的主体还可以是调用程序,即当调用程序不再需要调用子进程时,直接向子进程发送结束命令,用于退出子进程。
[0071]可选地,在上述图1所示实施例的基础上,还可以包括:
[0072]当子进程与各自对应组件数据通信失败时,输出该子进程的进程名。
[0073]具体地,当出现某个子进程与各自对应的组件数据通信失败时,则输出该通信失败的子进程的进程名。其中,可以是主进程监测数据通信失败的子进程,主进程输出该子进程的进程名,或者是数据通信失败的子进程自身输出自己的进程名。输出子进程的进程名,可以准确定位出现调用失败的组件,与现有技术相比,提高了问题组件的定位有效性。
[0074]下面介绍本发明实施例提供的组件运行装置,需要说明,下文提供的组件运行装置的说明可以与上文的组件运行方法相互参照。
[0075]参见图5,其示出了本发明实施例提供的组件运行装置的结构,包括:主进程模块1,具体地,该主进程模块I包括:
[0076]组件标识获取子模块11,用于当接收到调用程序发送的启动命令时,获取每个组件各自的组件标识。
[0077]本实施例中,调用程序需要调用组件时,向主进程模块I发送启动命令。当主进程模块I接收到该启动命令时,其中的组件标识获取子模块11获取组件的组件标识。
[0078]子进程创建启动子模块12,用于创建每个所述组件标识各自对应的子进程,并启动各个所述子进程。
[0079]针对每个组件标识,子进程创建启动子模块12分别创建一个子进程。这样,每个组件各自对应一个子进程,该子进程用于与各自对应的组件进行数据通信。与现有技术中的组件运行方式相比,本实施例中,每个组件分别对应一个子进程,可以提高组件的调用效率。
[0080]并且,子进程创建启动子模块12创建各个子进程后并启动各个子进程。可见,各个子进程并不是独立的,其创建及启动均需要依赖主进程。
[0081]利用子进程通信子模块13,用于利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信;其中,所述目标组件为所述启动成功的子进程对应的组件。
[0082]其中,调用程序需要调用各个组件,调用程序向主进程模块I发送启动命令,进而主进程模块I创建并启动各个子进程,并利用启动成功的子进程完成调用程序与组件之间的数据通信。需要说明,如果部分子进程并未启动成功,完成的仅是启动成功的子进程与各自对应组件之间的数据通信。其中,数据通信包括向组件发送数据,也包括从组件处获取数据。
[0083]现有技术中,调用程序需要调用各个组件时,利用一个单独的主进程模块完成与所有组件的通信,若主进程模块调用某个组件失败,会导致主进程的崩溃,从而无法调用其他的组件,运行稳定性较差。并且,该种运行装置中,组件的调用效率较低。然而,本实施例中,主进程模块I当接收到调用程序发送的启动命令后,子进程创建启动子模块12为每个组件单独创建一个对应的子进程,并启动各个子进程,进而利用子进程通信子模块13利用启动成功的子进程完成调用程序与组件之间的数据通信。可见,每个组件分别对应一个子进程,当某个子进程出现调用失败时,并不会影响其他子进程与组件之间的数据通信,提高了组件运行的稳定性及效率。同时,本实施例可以在各种不同的系统平台上运行,如Linux或Window等,系统兼容性较好。
[0084]可选地,如图6所示,上述利用子进程通信子模块13包括:第一子进程通信单元131及第二子进程通信单元132。其中:
[0085]第一子进程通信单元131,用于触发启动成功的子进程与目标组件进行数据通信,并触发所述启动成功的子进程直接与所述调用程序进行数据通信;
[0086]第二子进程通信单元132,用于触发启动成功的子进程与目标组件进行数据通信,并触发所述启动成功的子进程通过所述主进程模块与所述调用程序进行数据通信。
[0087]需要说明,本实施例中,利用子进程通信子模块13包括两种类型的子进程通信单元,可以利用其中的任意一个实现对应的子进程与调用程序之间的通信。
[0088]再者,如图7所示,在上述图5所示的组件运行装置基础上,所述主进程模块I还包括:子进程重启子模块14、子进程第一退出子模块15、子进程第二退出子模块16及子进程打印模块17 ;其中:
[0089]子进程重启子模块14,用于监测各个所述子进程是否启动成功,当监测到启动失败的子进程时,重新启动所述启动失败的子进程直至成功;
[0090]子进程第一退出子模块15,用于当接收到所述调用程序发送的退出命令时,退出各个所述子进程;
[0091]子进程第二退出子模块16,用于记录与各个所述启动成功的子进程未进行数据通信的持续时间,当所述持续时间达到预设时长时,退出与所述持续时间对应的子进程;
[0092]子进程打印模块17,用于当子进程与各自对应组件数据通信失败时,输出该子进程的进程名。
[0093]具体地,上述的子进程重启子模块14可以实现对启动失败的子进程的重启,上述的子进程第一退出子模块15可以实现在调用结束后,结束各个子进程的功能,上述的子进程第二退出子模块16可以结束长时间未与组件进行通信的子进程,上述的子进程打印模块17可以将通信失败的子进程的进程名输出,以供监控人员准确定位调用失败的组件。
[0094]当然,主进程模块I可以并不一定同时包含上述多个模块,可以包含一个或任意多个,从而具备不同的功能。
[0095]需要说明的是,上述各个主进程模块还可以包括:子进程第三退出模块,用于当监测到主进程退出时,退出各个子进程。
[0096]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0097]还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0098]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【权利要求】
1.一种组件运行方法,其特征在于,包括: 当接收到调用程序发送的启动命令时,主进程获取每个组件各自的组件标识; 所述主进程创建每个所述组件标识各自对应的子进程,且所述主进程启动各个所述子进程; 所述主进程利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信;其中,所述目标组件为所述启动成功的子进程对应的组件。
2.根据权利要求1所述的组件运行方法,其特征在于,所述主进程利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信,包括: 所述主进程触发启动成功的子进程与目标组件进行数据通信; 所述主进程触发所述启动成功的子进程直接与所述调用程序进行数据通信。
3.根据权利要求1所述的组件运行方法,其特征在于,所述主进程利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信,包括: 所述主进程触发启动成功的子进程与目标组件进行数据通信; 所述主进程触发所述启动成功的子进程通过所述主进程与所述调用程序进行数据通?目。
4.根据权利要求1所述的组件运行方法,其特征在于,在所述主进程启动各个所述子进程之后还包括: 所述主进程监测各个所述子进程是否启动成功; 当监测到启动失败的子进程时,所述主进程重新启动所述启动失败的子进程直至成功。
5.根据权利要求1所述的组件运行方法,其特征在于,还包括: 当接收到所述调用程序发送的退出命令时,所述主进程退出各个所述子进程。
6.根据权利要求3所述的组件运行方法,其特征在于,还包括: 所述主进程记录与各个所述启动成功的子进程未进行数据通信的持续时间; 当所述持续时间达到预设时长时,所述主进程退出与所述持续时间对应的子进程。
7.根据权利要求1所述的组件运行方法,其特征在于,还包括: 当子进程与各自对应组件数据通信失败时,输出该子进程的进程名。
8.—种组件运行装置,其特征在于,包括:主进程模块,其中:所述主进程模块包括: 组件标识获取子模块,用于当接收到调用程序发送的启动命令时,获取每个组件各自的组件标识; 子进程创建启动子模块,用于创建每个所述组件标识各自对应的子进程,并启动各个所述子进程; 利用子进程通信子模块,用于利用启动成功的子进程完成所述调用程序与目标组件之间的数据通信;其中,所述目标组件为所述启动成功的子进程对应的组件。
9.根据权利要求8所述的组件运行装置,其特征在于,所述利用子进程通信子模块包括: 第一子进程通信单元,用于触发启动成功的子进程与目标组件进行数据通信,并触发所述启动成功的子进程直接与所述调用程序进行数据通信; 第二子进程通信单元,用于触发启动成功的子进程与目标组件进行数据通信,并触发所述启动成功的子进程通过所述主进程模块与所述调用程序进行数据通信。
10.根据权利要求8所述的组件运行装置,其特征在于,所述主进程模块还包括: 子进程重启子模块,用于监测各个所述子进程是否启动成功,当监测到启动失败的子进程时,重新启动所述启动失败的子进程直至成功; 子进程第一退出子模块,用于当接收到所述调用程序发送的退出命令时,退出各个所述子进程; 子进程第二退出子模块,用于记录与各个所述启动成功的子进程未进行数据通信的持续时间,当所述持续时间达到预设时长时,退出与所述持续时间对应的子进程; 子进程打印模块,用于当子进程与各自对应组件数据通信失败时,输出该子进程的进程名。
【文档编号】G06F9/44GK104317605SQ201410658705
【公开日】2015年1月28日 申请日期:2014年11月18日 优先权日:2014年11月18日
【发明者】夏华丽, 郭军, 杨雪慧, 李庆 申请人:东方网力科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1