版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(19)国家知识产权局(12)发明专利地址100176北京市大兴区北京经济技术审查员范园园(74)专利代理机构北京瀚方律师事务所11774主进程基于第一接口信息来调用主进程的第一21.一种进程间通信系统,布置在计算设备的操作系统上,所述操作系统上包括文件管理器,所述文件管理器包括相应的文管界面,所述文管界面上包括多个界面控件,所述进程间通信系统包括:文件管理器的主进程,所述主进程适于接收对界面控件的触发操作事件,响应于所述触发操作事件,向代理服务端发送第二接口调用请求,以请求调用与所述界面控件相对应的第二接口来处理所述触发操作事件;文件管理器在启动后利用Fork方法基于主进程创建的服务进程,所述服务进程适于加载一个或多个插件,并适于接收插件发送的第一接口调用请求;以及从服务进程获取第一接口调用请求,从所述第一接口调用请求中获取第一接口信息,并将所述第一接口信息发送至所述主进程,以便所述主进程基于所述第一接口信息来调用主进程的第一接口,以通过所述第一接口创建新的界面控件;接收主进程发送的第二接口调用请求,从所述第二接口调用请求中获取第二接口信息,并将所述第二接口信息发送至服务进程,以便所述服务进程基于所述第二接口信息来调用插件的第二接口,以通过所述第二接口处理对界面控件的触发事件。所述第一接口信息包括第一目标路径、第一函数名和第一参数值;所述第二接口信息包括第二目标路径、第二函数名和第二参数值。基于所述第一目标路径定位到相应的目标界面对象,基于第一函数名来调用所述目标界面对象中相应的第一函数,并将所述第一参数值传入所述第一函数。4.如权利要求1-3中任一项所述的系统,其中,所述代理服务端通过总线与所述主进程、服务进程相连;所述主进程包括第一数据处理模块,所述第一数据处理模块与总线相连;所述服务进程包括第二数据处理模块,所述第二数据处理模块与总线相连。述监控模块适于获取所述服务进程的终止信号,并将终止信发送至主进程,以便再次基于主进程来创建服务进程。6.一种进程间通信方法,在进程间通信系统中执行,所述进程间通信系统布置在计算设备的操作系统上,所述操作系统上包括文件管理器,所述文件管理器包括相应的文管界文件管理器在启动后利用Fork方法基于文件管理器的主进程来创建服务进程,所述主进程适于接收对界面控件的触发操作事件,响应于所述触发操作事件,向代理服务端发送第二接口调用请求,以请求调用与所述界面控件相对应的第二接口来处理所述触发操作事通过服务进程加载一个或多个插件,并接收插件发送的第一接口调用请求;通过代理服务端从服务进程获取第一接口调用请求,从所述第一接口调用请求中获取第一接口信息,并将所述第一接口信息发送至所述主进程,以便所述主进程基于所述第一3接口信息来调用主进程的第一接口,以通过所述第一接口创建新的界面控件;以及通过代理服务端接收主进程发送的第二接口调用请求,从所述第二接口调用请求中获取第二接口信息,并将所述第二接口信息发送至服务进程,以便所述服务进程基于所述第二接口信息来调用插件的第二接口,以通过所述第二接口处理对界面控件的触发事件。7.一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求6所述的方法的指令。8.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求6所述方法。4[0001]本申请是2021年8月30日提交的发明专利申请2021110006856的分案申请。技术领域[0002]本发明涉及计算机技术领域,尤其涉及一种进程间通信系统、进程间通信方法及计算设备。背景技术文件管理器鹦鹉螺可以加载C插件,也可以加载Python脚本插件,通过这种加载插件的方案,可以为文管提供良好的扩展性,实现文管功能的动态扩充。但该方案存在一定风险,由于第三方插件的稳定性无法保证,导致文管在接入插件后,稳定性会受到一定的影响。[0004]例如,现有技术中有一种方案,是通过直接加载动态库插件来实现文管功能的扩展性,直接加载动态库的方式实现较简单,插件只需要继承主框架提供的通用插件基类,并在内部实现自己的具体业务。但,这种方案无法保证动态库内部的稳定性,如果动态库内部库等资源过于集中,影响文管主进程的启动效率和运行效率。[0005]基于此,需要一种进程间通信系统及方法,以发明内容[0006]为此,本发明提供一种进程间通信系统、进程间通信方法及计算设备,以解决或至少缓解上面存在的问题。[0007]根据本发明的一个方面,提供一种进程间通信系统,布置在计算设备的操作系统上,所述进程间通信系统包括:主进程;基于主进程创建的服务进程,所述服务进程适于加载一个或多个插件,并适于接收插件发送的第一接口调用请求;以及代理服务端,分别与所述主进程、服务进程相连,适于:从服务进程获取第一接口调用请求,从所述第一接口调用请求中获取第一接口信息.并将所述第一接口信息发送至所述主进程,以便所述主进程基于所述第一接口信息来调用主进程的第一接口;接收主进程发送的第二接口调用请求,从所述第二接口调用请求中获取第二接口信息,并将所述第二接口信息发送至服务进程,以便所述服务进程基于所述第二接口信息来调用插件的第二接口。[0008]可选地,在根据本发明的进程间通信系统中,所述操作系统上包括文件管理器,所述主进程为文件管理器的主进程。[0009]可选地,在根据本发明的进程间通信系统中,所述文件管理器包括相应的文管界面,所述文管界面上包括一个或多个界面控件;通过调用第一接口适于创建新的界面控件;通过调用第二接口适于处理对界面控件的触发事件。[0010]可选地,在根据本发明的进程间通信系统中,所述主进程适于:接收对界面控件的触发操作事件,响应于所述触发操作事件,向代理服务端发送第二接口调用请求,以请求调5用与所述界面控件相对应的第二接口来处理所述触发操作事件。[0011]可选地,在根据本发明的进程间通信系统中,所述第一接口信息包括第一目标路径、第一函数名和第一参数值;所述第二接口信息包括第二目标路径、第二函数名和第二参[0012]可选地,在根据本发明的进程间通信系统中,所述主进程适于:基于所述第一目标路径定位到相应的目标界面对象,基于第一函数名来调用所述目标界面对象中相应的第一函数,并将所述第一参数值传入所述第一函数。[0013]可选地,在根据本发明的进程间通信系统中,所述主进程中包括第一映射表,所述主进程进一步适于:基于第一函数名从所述映射表中获取相应的第一函数指针,基于所述第一函数指针来调用第一函数。[0014]可选地,在根据本发明的进程间通信系统中,所述服务进程适于:基于所述第二目标路径定位到相应的目标插件对象,基于第二函数名来调用所述目标插件对象中相应的第二函数,将第参数值传入所述第二函数。[0015]可选地,在根据本发明的进程间通信系统中,所述服务进程中包括第二映射表,所述服务进程进一步适于:基于第二函数名从所述第二映射表中获取相应的第二函数指针,基于所述第二函数指针来调用第二函数。[0016]可选地,在根据本发明的进程间通信系统中,所述代理服务端通过总线与所述主[0017]可选地,在根据本发明的进程间通信系统中,所述主进程包括第一数据处理模块,所述第一数据处理模块与总线相连;所述服务进程包括第二数据处理模块,所述第二数据处理模块与总线相连。务进程相连,适于监控所述服务进程的运行状态,其中,所述监控模块适于获取所述服务进程的终止信号,并将终止信发送至主进程,以便再次基于主进程来创建服务进程。[0019]可选地,在根据本发明的进程间通信系统中,所述服务进程是利用Fork方法基于主进程来创建的子进程。[0020]根据本发明的一个方面,提供一种进程间通信方法,在进程间通信系统中执行,所述方法包括步骤:基于主进程来创建服务进程;通过服务进程加载一个或多个插件,并接收插件发送的第一接口调用请求;通过代理服务端从服务进程获取第一接口调用请求,从所述第一接口调用请求中获取第一接口信息,并将所述第一接口信息发送至所述主进程,以便所述主进程基于所述第一接口信息来调用主进程的第一接口;以及通过代理服务端接收主进程发送的第二接口调用请求,从所述第二接口调用请求中获取第二接口信息,并将所述第二接口信息发送至服务进程,以便所述服务进程基于所述第二接口信息来调用插件的第二接口。[0021]可选地,在根据本发明的进程间通信方法中,所述主进程为文件管理器的主进程。[0022]可选地,在根据本发明的进程间通信方法中,所述文件管理器包括相应的文管界面,所述文管界面上包括一个或多个界面控件;通过调用第一接口适于创建新的界面控件;通过调用第二接口适于处理对界面控件的触发事件。[0023]可选地,在根据本发明的进程间通信方法中,接收主进程发送的第二接口调用请6求包括:接收主进程响应于对界面控件的触发操作事件发送的第二接口调用请求。[0024]可选地,在根据本发明的进程间通信方法中,基于主进程来创建服务进程的步骤包括:利用Fork方法,基于主进程创建相应的子进程作为服务进程。有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,所述程序指令包括用于执行如上所述的进程间通信方法的指令。[0026]根据本发明的一个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的进程间通信方法。[0027]根据本发明的技术方案,提供了一种进程间通信系统和方法,文件管理器等应用在启动后可以基于主进程来创建相应的子进程作为服务进程,主进程与服务进程之间相互隔离,并经由代理服务端进行交互,服务进程用于加载第三方插件并接收插件对主进程接口的调用请求,服务进程与主进程的接口调用均经由代理服务端来实现。从而,能实现主进程在与插件隔离的状态下调用插件提供的接口,确保文件管理器等应用使用第三方插件过程中的稳定性。这样,根据本发明的技术方案,在文件管理器等应用基于第三方插件来实现功能扩展的同时,实现了与第三方插件隔离的效果,避免了因第三方插件异常而导致文件管理器运行过程不稳定的问题。另外,主进程与服务进程之间经由代理服务器进行通信,使得主进程与服务进程之间可以共用大部分接口,从而降低了接口开发成本。[0028]进一步地,监控模块可以监控并获取服务进程的终止信号,通过将终止信号发送至主进程,可以再次基于主进程来创建服务进程。这样,能实现服务进程在崩溃终止运行后进行重启,进一步提高了文件管理器等应用的稳定性。[0029]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明[0030]为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。[0031]图1示出了根据本发明一个实施例的进程间通信系统100的示意图;[0032]图2示出了根据本发明一个实施例的计算设备200的示意图;[0033]图3示出了根据本发明一个实施例的文管界面示意图;以及[0034]图4示出了根据本发明一个实施例的进程间通信方法400的流程图。具体实施方式[0035]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围7完整的传达给本领域的技术人员。[0036]针对现有技术中的文件管理器插件化实现方案中存在的不稳定问题,本发明提出了一种进程间通信方案,可用于文件管理器等应用的进程间的交互。其中,应用的主进程与服务进程之间隔离,并经由代理服务端进行通信,这样,不仅能实现利用第三方插件来扩展应用的功能,而且,能实现与第三方插件隔离的效果,避免因第三方插件异常而导致应用运行过程不稳定。[0037]图1示出了根据本发明一个实施例的进程间通信系统100的示意图。进程间通信系统100布置在计算设备的操作系统上。[0038]如图1所示,进程间通信系统100包括应用的主进程110、基于主进程创建的服务进务进程120分别与代理服务端130相连,这样,主进程110与服务进程120可以通过代理服务端130进行通信。[0039]根据本发明的实施例,计算设备的操作系统上可以运行一个或多个应用,应用例如包括文件管理器。进程间通信系统100中的主进程110可以是运行在操作系统上的任意一个应用的主进程,例如是文件管理器的主进程。并且,应用在启动后可以基于主进程110来创建相应的子进程作为服务进程120。应用的主进程110与服务进程120之间相互隔离,可以经由代理服务端130进行通信。应当指出,本发明对应用的种类不做限制,本发明的进程间通信系统100可以用于各种类型的应用,以便应用主进程在与第三方插件隔离的状态下使用插件。[0040]根据本发明的一个实施例,操作系统上的应用包括文件管理器,进程间通信系统100中的主进程110可以实现为文件管理器的主进程,使得进程间通信系统100用于文件管理器进程之间的数据交互。文件管理器在启动后,可以利用Fork方法,基于主进程110来创建相应的子进程作为服务进程120,即,服务进程120是利用Fork方法基于主进程110来创建的子进程。并且,文件管理器的主进程110与服务进程120之间经由代理服务端130进行通信。这样,可以在隔离第三方插件的情况下实现文件管理器的插件化,在使用插件过程中能够避免因第三方插件异常而导致文件管理器运行过程不稳定的问题。[0041]下文仅以文件管理器为例来对本发明的进程间通信系统100进行详细描述,但,应当指出,本发明的进程间通信系统100可以用于各种类型的应用进程之间的数据交互。[0042]其中,服务进程120与外部的插件库相连,通过服务进程120可以加载插件库中的一个或多个第三方插件(以下简称“插件”)。这样,本发明通过基于主进程创建的服务进程来加载插件的方式,不仅能实现文件管理器的插件化、扩展文件管理器的功能,而且可以实现一些逻辑的复用,只需要维护一套程序代码。应当指出,本发明不限于插件的具体类型和基于插件实现的文件管理器的扩展功能。[0043]在一个实施例中,代理服务端130、主进程110、服务进程120分别与D从而代理服务端130可以通过DBus总线与主进程110、服务进程120通信相连。基于代理服务器,可以使主进程110与服务进程120之间可以共用大部分接口,在调用接口过程中才需要使用不同的逻辑,从而降低了接口开发成本。如图1所示,主进程110和服务进程120均包括一个用于实现通信数据处理的模块,其中,主进程110包括与DBus总线相连的第一数据处理模块111,服务进程120包括与DBus总线相连的第二数据处理模块122,这样,主进程110可以8通过第一数据处理模块111与DBus总线进行数据交互,服务进程120可以通过第二数据处理模块122与DBus总线进行数据交互。[0044]需要说明的是,第一数据处理模块111、第二数据处理模块122均继承于DBus相关的基类,另外,第一数据处理模块111、第二数据处理模块122均可以实现一个或多个数据处理接口,因继承了DBus的基类,从而可以将这些数据处理接口其他进程调用这些数据处理接口。[0045]在一个实施例中,应用包括相应的应用界面,以便用户基于应用界面来与应用进行交互。应用界面上可以包括一个或多个界面控件,用户可以通过操作这些界面控件来触发相应的事件。[0046]在一种实现方式中,文件管理器包括相应的文管界面,以便用户基于文管界面来与文件管理器进行交互。文管界面上可以包括一个或多个界面控件,例如包括左侧边栏、右侧边栏、工具栏中的控件等,用户可以通过操作这些界面控件来触发相应的事件。以下仅以文管界面为例来对界面控件触发事件的处理机制进行详细说明。但,应当指出,文管界面是文件管理器对应的应用界面,当本发明的进程间通信系统100应用于其他应用时,可以相应替换为其他应用的界面。[0047]需要说明的是,根据本发明的技术方案,为了实现文件管理器等应用的插件化、基于插件扩展文件管理器的功能,需要文件管理器(应用端)的主进程向外部提供一些接口,具体可以包括用于实现在文管界面上创建新的界面控件的接口,使得插件可以通过调用该接口实现在文管界面上创建与插件相对应的新的界面控件,例如在文管界面的侧边栏添加新的条目、在工具栏添加新的工具等界面控件。这样,用户便可以通过操作新的界面控件来使用基于插件实现的相应扩展功能。对于插件而言,需要调用文件管理器主进程提供的接[0048]另外,在文管界面上创建了与插件实现的扩展功能相对应的界面控件后,用户在需要使用扩展功能而触发相应的界面控件时,文件管理器的主进程会处理对界面控件的触发事件,而具体的扩展功能需要通过插件来实现,基于此,文管的主进程需要将对界面控件的触发事件信息发送至插件内部,通过调用插件内部的接口来处理对界面控件的触发事[0049]根据本发明的进程间通信系统100,可以实现插件对文件管理器(应用端)主进程提供的第一接口的调用、以及实现文件管理器主进程对插件内的第二接口的调用。[0050]在本发明的实施例中,在基于文件管理器的主进程110创建服务进程120之后,服务进程120可以从插件库加载一个或多个插件。在加载插件后,插件会向服务进程120发送第一接口调用请求,以请求调用文件管理器主进程的第一接口。在一个实施例中,通过调用第一接口可以创建与插件相对应的新的界面控件,并将新的界面控件显示在文管界面上。[0051]如前文所述,服务进程120可以通过代理服务端130实现与主进程110通信,基于此,服务进程120在接收到插件发送的第一接口调用请求之后,可以将第一接口调用请求发送至代理服务端130,以便经由代理服务端130与主进程110进行通信,来实现调用主进程的第一接口。具体地,代理服务端130可以从第一接口调用请求中获取第一接口信息,并将第一接口信息打包发送至主进程110,以便主进程110基于第一接口信息来调用文件管理器主进程的第一接口。通过调用第一接口可以创建与插件相对应的新的界面控件,并将新的界9面控件显示在文管界面上。[0052]在一个实施例中,在通过调用第一接口创建与插件相对应的新的界面控件后,文管界面上显示与一个或多个插件相对应的一个或多个新的界面控件。当用户操作界面上的任意一个界面控件时,文件管理器的主进程110可以接收到用户对界面控件的触发操作事件。如果用户触发的是插件(即第三方插件)通过调用第一接口而创建的新的界面控件,主进程110在接收到用户对界面控件的触发操作事件后,会请求调用与所触发的界面控件相对应的插件内的第二接口。[0053]具体地,基于主进程110可以通过代理服务端130实现与服务进程120通信,主进程110可以响应于用户对界面控件的触发操作事件,向代理服务端130发送第二接口调用请求,以请求调用与所述界面控件相对应的第二接口,以便通过调用第二接口来处理对界面控件的触发操作事件。这里,应当指出,这里的界面控件是基于插件创建的,界面控件对应的第二接口是插件提供的用于处理对该界面控件的触发操作事件的事件处理接口。[0054]在本发明的实施例中,代理服务端130在接收到主进程110发送的第二接口调用请求,可以将第二接口调用请求发送至代理服务端130,以便经由代理服务端130与服务进程120进行通信,来实现调用插件中的第二接口。具体地,代理服务端130可以从第二接口调用请求中获取第二接口信息,并将第二接口信息打包发送至服务进程120,以便由服务进程120基于第二接口信息来调用插件提供的第二接口。[0055]在一个实施例中,代理服务端130从第一接口调用请求中获取到的第一接口信息包括第一源路径、第一目标路径、第一函数名和第一参数值,并将获取到的第一目标路径、第一函数名和第一参数值进行打包后通过DBus总线发送至主进程110。这里,第一目标路径是目标界面对象对应的路径,需要说明的是,界面对象是界面控件对应的实例对象,目标界面对象即是插件要创建的新的界面控件对应的界面对象。[0056]主进程110在获取到第一接口信息后,可以基于第一目标路径定位到相应的目标界面对象,并基于第一函数名来调用目标界面对象中相应的第一函数(第一接口对应的函数),在调用第一函数时将第一参数值传入第一函数,从而实现对第一函数的调用,可以获取到第一函数返回的结果。这里,第一函数的执行结果可以是创建了与插件相对应的新的界面控件,并将新的界面控件显示在文管界面上。这样,便根据本发明的进程间通信系统100实现了第三方插件调用文件管理器提供的第一接口的过程。[0057]在一个实施例中,代理服务端130从第二接口调用请求中获取到的第二接口信息包括第二源路径、第二目标路径、第二函数名和第二参数值,并将获取到的第二目标路径、第二函数名和第二参数值进行打包后通过DBus总线发送至服务进程120。这里,第二目标路径是目标插件对象对应的路径,需要说明的是,目标插件对象即是用户触发的界面控件对应的插件的实例对象。[0058]服务进程120在获取到第二接口信息后,可以基于第二目标路径定位到相应的目标插件对象,基于第二函数名来调用目标插件对象中的第二函数,在调用第二函数时将第参数值传入所述第二函数,从而实现对第二函数的调用,可以获取第二函数返回的结果。即,通过调用第二函数来实现处理界面控件的触发操作事件。这样,便根据本发明的进程间通信系统100实现了文管主进程在与插件隔离的状态下调用插件提供的第二接口,从而确保文件管理器使用第三方插件过程中的稳定性。[0059]图3示出了根据本发明一个实施例的文管界面示意图。如图3所示,文管界面上的左侧包括侧边栏(Sidebar),其中包括多个侧边栏条目(SidebarItem),例如包括最近使[0060]在一种实现方式中,第一接口可以实现为在侧边栏添加条目接口。具体地,当插件需要在文管界面上的侧边栏添加一个条目时,首先查找到服务进程120中的侧边栏Sidebar包括条目名称等属性。随后,Sidebar对象根据标志位来判断是否使用代理逻辑,如果标志位为真,则进入代理逻辑,将对addItem接口的调用请求发送至代理服务器120。代理服务器打包发送至文件管理器的主进程110。主进程110在基于接口信息实现调用相应的添加条目接口之后,可以实现在文管界面上添加一个新的侧边栏条目,用户可以通过点击等方式来操作该新的侧边栏条目。[0061]需要说明的是,通过Sidebar对象可以获取到新添加的SidebarItem对象。SidebarItem对象可以注册一个Handle对象,用于响应并处理对侧边栏条目的触发事件。[0062]当用户操作新添加的侧边栏条目时,主进程110通过Handle对象可以响应于用户对侧边栏条目的触发操作事件,并会判断当前的Fork标志位,如果标志位为真,则向代理服务端130发送对相应的插件的接口的调用请求(第二接口调用请求),以请求调用与侧边栏条目相对应的插件的接口(第二接口)。代理服务端130从接口调用请求中获取源路径、目标路径、函数名、传入参数等接口信息,并将接口信息打包发送至服务进程120。服务进程120在接收到接口信息后,基于接口信息实现调用相应插件的接口,从而实现对侧边栏条目的触发操作事件的处理。[0063]在一种实现方式中,文件管理器的主进程110定义了Map<URL,Object>类型的成员变量,基于该变量来存储文管界面上的一个或多个界面控件对应的界面对象,从而主进程110可以基于URL路径来定位到相应的界面对象。例如,第一目标路径可以实现为ui:///window/sidebar,相应地,存储在Map中的目标界面对象可以实现为insert(“ui:///window/sidebar”,sidebar0bject)。这样,基于第一目标路径可以定位到相应的目标界面对象。[0064]相应地,服务进程120也可以通过Map<URL,0bject>类型的成员变量,来存储一个或多个插件对象,从而服务进程120可以基于URL路径来定位到相应的插件对象。基于第二目标路径可以定位到相应的目标插件对象。“ui”表示定位界面对象,用“plugin”表示定位插件对象。另外,“sidebar”用于标识最终的位于左侧的集合包含位于右侧的集合或对象。例如,对于URL“ui:///window/toolbar/过URL的方式可以有效避免查找路径重复的问题,也更直观。[0066]需要说明的是,由于两个进程之间无法直接使用函数进行调用,因此,根据本发明的技术方案,代理服务端130通过发送需要调用的函数的函数名和参数值的形式,来实现对11象)中的函数名和函数指针来建立相应的映射表。这样,在接收到代理服务端130发送的调用请求时,在基于目标路径确定目标对象后,可以基于接收到的函数名从映射表中查询到相应的函数指针,基于函数指针调用函数并传入相应的参数值,即可实现对函数的调用。[0067]其中,主进程110基于所存储的每个界面控件对应的界面对象,基于界面对象中的函数的函数名和函数指针来建立相应的第一映射表。在第一映射表中,界面对象中的函数名与函数指针建立了一对一的映射关系。这样,主进程110包括预先建立的第一映射表,在获取到第一接口信息并基于第一目标路径定位到目标界面对象后,可以基于第一函数名从第一映射表中获取相应的第一函数指针,基于第一函数指针来调用第一函数。[0068]服务进程120基于所存储的每个插件对象中的函数的函数名和函数指针来建立相应的第二映射表。在第二映射表中,插件对象中的函数名与函数指针建立了一对一的映射关系。这样,服务进程120包括预先建立的第二映射表,在获取到第二接口信息并基于第二目标路径定位到目标插件对象后,可以基于第二函数名从第二映射表中获取相应的第二函数指针,基于第二函数指针来调用第二函数。[0069]根据一个实施例,进程间通信系统还包括监控模块150,监控模块150分别与主进程110、服务进程120相连,适于监控服务进程120的运行状态,获取服务进程120的信号。当服务进程120发生异常而崩溃时,监控模块150可以获取到服务进程120的终止信号,并将终止信号发送至主进程110,以便再次基于主进程来创建服务进程。这样,能实现服务进程在崩溃终止运行后进行重启,进一步提高了文件管理器等应用的稳定性。[0070]根据本发明的进程间通信系统100,文件管理器等应用在启动后可以基于主进程来创建相应的子进程作为服务进程,主进程与服务进程之间相互隔离,并经由代理服务端进行交互,服务进程用于加载第三方插件并接收插件对主进程接口的调用请求,服务进程与主进程的接口调用均经由代理服务端来实现。从而,能实现主进程在与插件隔离的状态下调用插件提供的接口,确保文件管理器等应用使用第三方插件过程中的稳定性。这样,根据本发明的技术方案,在文件管理器等应用基于第三方插件来实现功能扩展的同时,实现了与第三方插件隔离的效果,避免了因第三方插件异常而导致文件管理器运行过程不稳定的问题。另外,主进程与服务进程之间经由代理服务器进行通信,使得主进程与服务进程之间可以共用大部分接口,从而降低了接口开发成本。[0071]图2示出了根据本发明一个实施例的计算设备200的示意图。[0072]如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。[0073]取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(UP)、微控制器(UC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。[0074]取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易器206可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。[0075]计算设备200还包括储存设备232,储存设备232包括可移除储存器236和不可移除储存器238。[0076]计算设备200还可以包括储存接口总线234。储存接口总线234实现了从储存设备232(例如,可移除储存器236和不可移除储存器238)经由总线/接口控制器230到基本配置202的通信。操作系统220、应用222以及数据224的至少一部分可以存储在可移除储存器236和/或不可移除储存器238上,并且在计算设备200上电或者要执行应用222时,经由储存接口总线234而加载到系统存储器206中,并由一个或者多个处理器204来执行。[0077]计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/0端口258和诸如输入设备(例如,键盘、鼠标、笔、语输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。[0078]网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。[0079]在根据本发明的实施例中,计算设备100被配置为执行根据本发明的进程间通信方法400。计算设备100的操作系统上包含用于执行本发明的进程间通信方法400的多条程序指令,使得本发明的进程间通信方法400可以在计算设备100的操作系统中执行。[0080]根据本发明的一个实施例,计算设备200中驻留有进程间通信系统100,进程间通信系统100布置在计算设备200的操作系统上。进程间通信系统100包括执行进程间通信方法400的多条程序指令,这些程序指令可以指示处理器204执行本发明的进程间通信方法400,使得本发明的进程间通信方法400可以在进程间通信系统100中执行。[0081]在根据本发明的实施例中,计算设备200的操作系统上可以运行一个或多个应用,其中可以包括文件管理器。进程间通信系统100包括应用的主进程110、基于主进程创建的110、服务进程120分别与代理服务端130相连,这样,主进程110与服务进程120可以通过代理服务端130进行通信。进程间通信系统100中的主进程110可以是运行在操作系统上的任意一个应用的主进程。[0082]在一个实施例中,主进程110可以实现为文件管理器的主进程,使得本发明的进程间通信方法400可用于文件管理器进程之间的数据交互。[0083]图4示出了根据本发明一个实施例的进程间通信方法400的流程图。方法400适于在进程间通信系统100中执行。[0085]在步骤S410中,基于主进程110来创建服务进程。这里,应用(例如文件管理器)在启动后,可以利用Fork方法,基于主进程110来创建相应的子进程作为服务进程120。[0086]随后,在步骤S420中,通过服务进程120从外部的插件库加载一个或多个插件,随后接收插件发送的第一接口调用请求。[0087]随后,在步骤S420中,通过代理服务端130从服务进程获取第一接口调用请求,从第一接口调用请求中获取第一接口信息,并将第一接口信息发送至主进程,以便主进程110基于第一接口信息来调用主进程的第一接口。[0088]最后,在步骤S440中,通过代理服务端130接收主进程发送的第二接口调用请求,从第二接口调用请求中获取第二接口信息,并将第二接口信息发送至服务进程,以便服务进程120基于第二接口信息来调用插件的第二接口。[0089]在一种实现方式中,文件管理器包括相应的文管界面,以便用户基于文管界面来与文件管理器进行交互。文管界面上可以包括一个或多个界面控件,例如包括左侧边栏、右侧边栏、工具栏中的控件等,用户可以通过操作这些界面控件来触发相应的事件。[0090]在一个实施例中,通过调用第一接口可以创建与插件相对应的新的界面控件,并将新的界面控件显示在文管界面上。通过调用第二接口可以处理用户对界面控件的触发操作事件。[0091]具体地,主进程110可以响应于用户对界面控件的触发操作事件,向代理服务端130发送第二接口调用请求,以请求调用与界面控件相对应的第二接口,以便通过调用第二接口来处理对界面控件的触发操作事件。应当指出,这里的界面控件可以是基于插件创建的,界面控件对应的第二接口是插件提供的用于处理对该界面控件的触发操作事件的事件处理接口。[0092]代理服务端130可以接收到主进程响应于对界面控件的触发操作事件发送的第二接口调用请求。随后,代理服务端130可以将第二接口调用请求发送至代理服务端130,以便经由代理服务端130与服务进程120进行通信,来实现调用插件中的第二接口。具体地,代理服务端130可以从第二接口调用请求中获取第二接口信息,并将第二接口信息打包发送至服务进程120,以便由服务进程120基于第二接口信息来调用插件提供的第二接口。[0093]应当指出,在步骤S410~S440中,主进程110、服务进程120和代理服务端130之间的具体通信逻辑和实现方式参见前文对进程间通信系统100的具体描述,这里不再重复描[0094]这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。[0095]在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的进程间通信方法。[0096]以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。[0097]在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。[0098]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。[0099]类似地,应当理解,为了精简本公开并帮助理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年供应链管理知识体系专项习题
- 2026年考研国有企业综合招聘笔试备考习题
- 2026年环境监测技术与应用知识测试
- 2026年交通安全法规与驾驶行为规范训练题
- 2026年科学探索综合测试卷
- 2026年金融创新与科技应用备考习题集
- 2026年国有企业招聘法律知识测试
- 考试试题及答案 试卷结构
- DB13-T 6341-2026 沥青路面回收料就地精细分离技术规范
- 物流系统分析师职业资格考试试卷
- 工程挂靠内部合同协议
- 翻新旧房合同范例
- 下水管道合同模板
- DL-T573-2021电力变压器检修导则
- 新闻采访与写作-马工程-第二章
- 湖北邮政公司招聘笔试题目
- DZ-T 0270-2014地下水监测井建设规范
- KWFB无密封自控自吸泵(服务)课件
- 现代综合评价方法和案例-配套教材
- GB/T 4450-1995船用盲板钢法兰
- 5.5M焦炉(1×55孔)施工方案
评论
0/150
提交评论