CN113821363A - 一种进程间通讯方法及系统 - Google Patents

一种进程间通讯方法及系统 Download PDF

Info

Publication number
CN113821363A
CN113821363A CN202111409285.0A CN202111409285A CN113821363A CN 113821363 A CN113821363 A CN 113821363A CN 202111409285 A CN202111409285 A CN 202111409285A CN 113821363 A CN113821363 A CN 113821363A
Authority
CN
China
Prior art keywords
service
android
linux
dbus
calling
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
Application number
CN202111409285.0A
Other languages
English (en)
Other versions
CN113821363B (zh
Inventor
李翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing Jingling Information System Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingling Information System Technology Co Ltd filed Critical Beijing Jingling Information System Technology Co Ltd
Priority to CN202111409285.0A priority Critical patent/CN113821363B/zh
Publication of CN113821363A publication Critical patent/CN113821363A/zh
Application granted granted Critical
Publication of CN113821363B publication Critical patent/CN113821363B/zh
Priority to PCT/CN2022/102065 priority patent/WO2023093039A1/zh
Priority to US18/443,694 priority patent/US20240231974A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明提供一种进程间通讯方法及系统,方法包括:当监听到Linux的Dbus总线中有服务注册时,在Android服务管理器中同步添加服务;当监听到Android中有服务添加时,在Linux的Dbus总线中同步注册服务;当Linux进程和Android进程发出服务调用请求时,对Dbus与Binder之间传输的数据结构进行双向转换。本发明能够根据同步注册/添加的服务实现不同进程间进行服务的相互调用,从而有效简化了Linux进程与Android进程之间进行双向通讯的实现过程。

Description

一种进程间通讯方法及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种进程间通讯方法及系统。
背景技术
目前Linux进程利用Binder与Android进程进行进程间通讯,通过借助libgbinder等开源项目实现与Android Binder服务连接。Linux桌面系统的IPC(进程间通信)一般采用Dbus,对于Linux程序来说采用Dbus通信会更容易。但是,libgbinder等开源项目仅支持Linux访问Android Service,而无法支持Android应用访问Linux Service。因此,对于Linux进程与Android进程之间的双向通讯,目前尚未有简单易行的实现方案。
发明内容
本发明提供一种进程间通讯方法、系统、电子设备及存储介质,用以解决上述技术问题,能够简化Linux进程与Android进程之间进行双向通讯的实现过程。
本发明提供一种进程间通讯方法,包括:
当监听到Linux进程注册Linux服务的消息时,通过Binder设备调用服务添加接口以使服务管理器添加第一同步服务;其中,所述第一同步服务与所述Linux服务为一一对应关系;
当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务;其中,所述第二同步服务与所述Android服务为一一对应关系。
在一个实施例中,所述进程间通讯方法还包括:
当接收到所述Linux进程的第一调用请求时,将结构转换后的第一调用请求转发至与所述第二同步服务相对应的目标Android服务中,继而将所述目标Android服务反馈的第一调用结果进行结构转换后转发至所述Linux进程;
当接收到所述Android进程的第二调用请求时,将结构转换后的第二调用请求转发至与所述第一同步服务相对应的目标Linux服务中,继而将所述目标Linux服务反馈的第二调用结果进行结构转换后转发至所述Android进程。
在一个实施例中,所述当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务,包括:
当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务,继而将所述Android服务的handle标识与所述第二同步服务进行关联绑定。
在一个实施例中,所述的进程间通讯方法还包括:
当监听到所述Linux进程注销Linux服务的消息时,通过所述Binder设备调用服务删除接口以使所述服务管理器删除与所述Linux服务相对应的第一同步服务。
在一个实施例中,所述的进程间通讯方法还包括:
当监听到Android进程删除Android服务的消息时,向Dbus总线发出服务注销指令以使所述Dbus总线注销与所述Android服务相对应的第二同步服务。
在一个实施例中,当接收到所述Linux进程的第一调用请求时,将结构转换后的第一调用请求转发至与所述第二同步服务相对应的目标Android服务中,继而将所述目标Android服务反馈的第一调用结果进行结构转换后转发至所述Linux进程,包括:
当接收到所述Linux进程通过所述Dbus总线发送的第一调用请求时,将所述第一调用请求的传入参数的数据结构转换为Android格式;
将结构转换后的第一调用请求通过Binder设备转发至与所述第二同步服务相对应的目标Android服务中;
接收所述目标Android服务根据所述第一调用请求反馈的第一调用结果,并将所述第一调用结果的数据结构转换为Linux格式后,将结构转换后的第一调用结果通过所述Dbus总线转发至所述Linux进程。
在一个实施例中,当接收到所述Android进程的第二调用请求时,将结构转换后的第二调用请求转发至与所述第一同步服务相对应的目标Linux服务中,继而将所述目标Linux服务反馈的第二调用结果进行结构转换后转发至所述Android进程,包括:
当接收到所述Android进程通过所述Binder设备发送的第二调用请求时,将所述第二调用请求的传入参数的数据结构转换为Linux格式;
将结构转换后的第二调用请求通过所述Dbus总线转发至与所述第一同步服务相对应的目标Linux服务中;
接收所述目标Linux服务根据所述第二调用请求反馈的第二调用结果,并将所述第二调用结果的数据结构转换为Android格式后,将结构转换后的第二调用结果通过所述Binder设备转发至所述Android进程。
在一个实施例中,所述Linux进程注册Linux服务的消息是由所述Dbus总线在注册所述Linux服务之后发出;所述Android进程添加Android服务的消息是由所述Android进程在确认所述Android服务被添加之后发出。
本发明还提供一种进程间通讯系统,包括:
第一同步模块,用于当监听到Linux进程注册Linux服务的消息时,通过Binder设备调用服务添加接口以使服务管理器添加第一同步服务;其中,所述第一同步服务与所述Linux服务为一一对应关系;
第二同步模块,用于当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务;其中,所述第二同步服务与所述Android服务为一一对应关系。
本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述进程间通讯方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述进程间通讯方法的步骤。
本发明提供的进程间通讯方法、系统、电子设备及存储介质,当监听到Linux的Dbus总线中有服务注册时,在Android服务管理器中同步添加服务;当监听到Android中有服务添加时,在Linux的Dbus总线中同步注册服务;从而能够根据同步注册/添加的服务实现不同进程间进行服务的相互调用,进而有效简化了Linux进程与Android进程之间进行双向通讯的实现过程。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的进程间通讯方法的流程示意图;
图2是本发明实施例提供的方案整体框架示意图;
图3是本发明实施例提供的Linux Dbus服务注册流程示意图;
图4是本发明实施例提供的Linux Dbus服务注销流程示意图;
图5是本发明实施例提供的Android Binder服务添加流程示意图;
图6是本发明实施例提供的Android Binder服务删除流程示意图;
图7是本发明实施例提供的Linux进程调用Android Binder服务的流程示意图;
图8是本发明实施例提供的Android进程调用Linux Dbus服务的流程示意图;
图9是本发明实施例提供的进程间通讯系统的结构示意图;
图10是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供一种进程间通讯方法,可以包括步骤:
S1、当监听到Linux进程注册Linux服务的消息时,通过Binder设备调用服务添加接口以使服务管理器添加第一同步服务;其中,所述第一同步服务与所述Linux服务为一一对应关系;
S2、当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务;其中,所述第二同步服务与所述Android服务为一一对应关系。
需要说明的是,解决上述背景技术提出的技术问题的关键是,DBus Bus(DBus总线)和Binder如何同步所有服务状态。如图2所示,本发明实施例可以增加一个BinderAgent模块,该模块是关联Dbus与Binder的核心。可以由BinderAgent模块作为所述的进程间通讯方法的执行主体。其需要实现以下几个功能:
1、BinderAgent通过binder设备,可以和ServiceManager、Binder服务(Android服务)以及客户端通信。
2、BinderAgent连接Dbus bus,可以通过Dbus bus与Dbus服务(Linux服务)以及客户端通信。
3、监听Dbus bus上的服务注册;当有新的Dbus服务注册时,Binder Agent同步在ServiceManager上添加服务。
4、监听Binder上的服务添加;当有新的Binder服务添加时,Binder Agent同步在Dbus Bus上注册服务。
5、Binder Agent实现Dbus与Binder数据结构的双向转换。
需要说明的是,Dbus Daemon是一个后台进程,负责消息的转发。它就像个路由器。BinderAgent在实现时,既可以在Dbus Daemon中,也可以是单独的服务。考虑性能因素,本发明实施例将BinderAgent放在了Dbus Daemon中,以提高系统性能。
本发明实施例提供的进程间通讯方法,当监听到Linux的Dbus总线中有服务注册时,在Android服务管理器中同步添加服务;当监听到Android中有服务添加时,在Linux的Dbus总线中同步注册服务。可以实现Linux进程通过dbus接口访问Android 服务的Binder方法;Android 进程通过Binder接口可以访问Linux服务的Dbus方法。从而能够根据同步注册/添加的服务实现不同进程间进行服务的相互调用,进而有效简化了Linux进程与Android进程之间进行双向通讯的实现过程。
在一个实施例中,所述进程间通讯方法还可以包括:
S3、当接收到所述Linux进程的第一调用请求时,将结构转换后的第一调用请求转发至与所述第二同步服务相对应的目标Android服务中,继而将所述目标Android服务反馈的第一调用结果进行结构转换后转发至所述Linux进程;
S4、当接收到所述Android进程的第二调用请求时,将结构转换后的第二调用请求转发至与所述第一同步服务相对应的目标Linux服务中,继而将所述目标Linux服务反馈的第二调用结果进行结构转换后转发至所述Android进程。
本发明实施例提供的进程间通讯方法,通过对Dbus与Binder之间传输的数据结构进行双向转换。可以实现Linux进程通过dbus接口访问Android 服务的Binder方法;Android 进程通过Binder接口可以访问Linux服务的Dbus方法。从而能够根据同步注册/添加的服务实现不同进程间进行服务的相互调用,进而有效简化了Linux进程与Android进程之间进行双向通讯的实现过程。
在一个实施例中,所述当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务,包括:
当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务,继而将所述Android服务的handle标识与所述第二同步服务进行关联绑定。
本发明实施例提供的进程间通讯方法,通过将所述Android服务的handle标识与所述第二同步服务进行关联绑定,从而在Linux进程调用Android服务时能够根据handle标识查找对应服务的handle,有效提高了服务调用的可行性。
在一个实施例中,所述的进程间通讯方法还包括:
当监听到所述Linux进程注销Linux服务的消息时,通过所述Binder设备调用服务删除接口以使所述服务管理器删除与所述Linux服务相对应的第一同步服务。
本发明实施例提供的进程间通讯方法,监听Dbus bus上的服务注销。当有Dbus服务注销时,Binder Agent同步在Binder上删除服务,从而有效提高系统的安全性和可靠性。
在一个实施例中,所述的进程间通讯方法还包括:
当监听到Android进程删除Android服务的消息时,向Dbus总线发出服务注销指令以使所述Dbus总线注销与所述Android服务相对应的第二同步服务。
本发明实施例提供的进程间通讯方法,监听Binder上的服务删除。当有Binder服务删除时,Binder Agent同步在Dbus bus上注销服务,从而有效提高系统的安全性和可靠性。
在一个实施例中,当接收到所述Linux进程的第一调用请求时,将结构转换后的第一调用请求转发至与所述第二同步服务相对应的目标Android服务中,继而将所述目标Android服务反馈的第一调用结果进行结构转换后转发至所述Linux进程,包括:
当接收到所述Linux进程通过所述Dbus总线发送的第一调用请求时,将所述第一调用请求的传入参数的数据结构转换为Android格式;
将结构转换后的第一调用请求通过Binder设备转发至与所述第二同步服务相对应的目标Android服务中;
接收所述目标Android服务根据所述第一调用请求反馈的第一调用结果,并将所述第一调用结果的数据结构转换为Linux格式后,将结构转换后的第一调用结果通过所述Dbus总线转发至所述Linux进程。
本发明实施例提供的进程间通讯方法,通过实现Android和Linux之间数据结构的双向转换,并通过Dbus总线、Binder设备来转发调用请求和调用结果,有效简化了Linux与Android系统之间调用的代码实现。
在一个实施例中,当接收到所述Android进程的第二调用请求时,将结构转换后的第二调用请求转发至与所述第一同步服务相对应的目标Linux服务中,继而将所述目标Linux服务反馈的第二调用结果进行结构转换后转发至所述Android进程,包括:
当接收到所述Android进程通过所述Binder设备发送的第二调用请求时,将所述第二调用请求的传入参数的数据结构转换为Linux格式;
将结构转换后的第二调用请求通过所述Dbus总线转发至与所述第一同步服务相对应的目标Linux服务中;
接收所述目标Linux服务根据所述第二调用请求反馈的第二调用结果,并将所述第二调用结果的数据结构转换为Android格式后,将结构转换后的第二调用结果通过所述Binder设备转发至所述Android进程。
本发明实施例提供的进程间通讯方法,通过实现Android和Linux之间数据结构的双向转换,并通过Dbus总线、Binder设备来转发调用请求和调用结果,有效简化了Linux与Android系统之间调用的代码实现。
在一个实施例中,所述Linux进程注册Linux服务的消息是由所述Dbus总线在注册所述Linux服务之后发出;所述Android进程添加Android服务的消息是由所述Android进程在确认所述Android服务被添加之后发出。
本发明实施例提供的进程间通讯方法,由Dbus总线根据Linux服务的注册情况向Binder Agent发送监听消息,同时由Android进程根据Android服务的添加情况向BinderAgent发送监听消息,有效简化了Linux与Android系统之间调用的代码实现。
基于上述方案,为便于更好的理解本发明实施例提供的进程间通讯方法,以下列举具体实例进行详细说明:
(1)、如图3所示,Linux Dbus服务注册的流程如下:
1、Linux服务注册接口没有变动,Linux服务还是调用Dbus Bus接口注册服务。
2、Dbus Bus在收到注册请求之后,首先在Bus上注册该服务。注册成功之后,通知BinderAgent模块有新服务注册。
3、BinderAgent模块收到新服务注册通知之后,调用Binder的标准的添加服务接口。
4、该添加服务接口通过Binder设备,调用到ServiceManager的服务添加处理。
5、ServiceManager将对应的第一同步服务添加完成之后,将结果返回给BinderAgent。
6、BinderAgent收到服务添加结果之后,将成功或失败的结果返回给Dbus Bus。
7、Dbus Bus根据服务添加结果,向Linux服务返回注册结果。
(2)如图4所示,Linux Dbus服务注销流程如下:
1、Linux服务注销接口没有变动,Linux服务还是调用Dbus Bus接口注销服务。
2、Dbus Bus在收到注销请求之后,首先在Bus上注销该服务。注销成功之后,通知BinderAgent模块有服务注销。
3、BinderAgent模块收到服务注销通知之后,调用Binder的标准的删除服务接口。
4、该删除服务接口通过Binder设备,调用到ServiceManager的服务删除处理。
5、ServiceManager将对应的第一同步服务删除完成之后,将结果返回给BinderAgent。
6、BinderAgent收到服务删除结果之后,将成功或失败的结果返回给Dbus Bus。
7、Dbus Bus根据服务删除结果,向Linux服务返回注销结果。
(3)如图5所示,Android Binder服务添加流程如下:
1、Android Binder服务添加接口没有变动,Android进程还是调用Binder接口添加服务。
2、Binder在收到服务添加请求之后,首先在ServiceManager上添加该服务。并将服务添加结果发送给Android服务(Android进程)。
3、Android服务收到添加结果确认ServiceManager添加服务成功之后,通过Binder设备发送服务添加通知。
4、BinderAgent模块收到服务添加通知之后,根据添加的Android服务名称,向Dbus Bus注册对应的Dbus服务(第二同步服务)。
5、Dbus服务注册完成之后,BinderAgent会发起获取服务请求。
6、ServiceManger收到获取服务请求之后,将对应服务的handle返回。
7、BinderAgent在收到对应服务的handle之后,将之前注册的Dbus服务与binderhandle关联到一起。
(4)如图6所示,Android Binder服务删除流程如下:
1、Android Binder服务删除接口没有变动,Android进程还是调用Binder接口删除服务。
2、Binder在收到服务删除请求之后,首先在ServiceManager上删除该服务。并将服务删除结果发送给Android服务(Android进程)。
3、Android服务收到删除结果确认ServiceManager删除服务成功之后,通过Binder设备发送服务删除通知。
4、BinderAgent模块收到服务删除通知之后,根据删除的Android服务名称,向Dbus Bus注销对应的Dbus服务(第二同步服务)。
5、Dbus服务注销完成之后,返回服务注销结果给BinderAgent会发起获取服务请求。
(5)如图7所示,Linux进程调用Android Binder服务流程如下:
1、Linux进程调用Android服务的接口,还是使用标准的dbus接口。Linux进程将调用方法发送给Dbus Bus。
2、Dbus bus在收到服务的调用方法之后,会通过调用方法的参数-服务名称查找服务,如果查找到的是BinderAgent注册的服务,该调用请求发送给BinderAgent处理。
3、BinderAgent在收到调用请求之后,根据服务名称查找对应的服务handle,同时将传入参数的数据结构按转换规则对应转换成Android序列。在这些完成之后,将转换后的调用请求通过binder设备发送给对应的服务handle。
4、Android服务收到方法调用之后,执行方法处理,并返回处理结果。本步骤和正常的其他Android进程调用是相同的。
5、BinderAgent在收到Android服务返回的结果之后(通过调用Binder接口实现),将结果的数据结构转化为Linux序列。完成之后,将结果发送给Dbus Bus。
6、Dbus Bus在收到方法结果之后,通过标准的Dbus接口返回给Linux进程。
7、Linux进程则收到Android服务的处理结果。
(6)如图8所示,Android进程调用Linux Dbus服务流程如下:
1、Android进程首先向ServiceManager发送获取服务请求。Android进程调用Linux服务接口,对于Android进程还是标准的Binder流程。
2、ServiceManager在收到Android进程发送获取服务请求之后,会根据服务名称查找。由于之前Linux服务在注册时,通过BinderAgent添加过服务,因此可以通过服务名称查找到对应的handle。ServiceManager将Linux服务对应的handle返回给Android进程。
3、Android进程在收到Linux服务对应的handle后,通过binder设备调用该方法。
4、BinderAgent收到binder调用请求之后,将调用的参数数据结构转化为Linux序列。同时根据请求的服务处理,得到Linux Dbus服务名称。BinderAgent将方法通过DbusBus发送给对应的Linux服务(Dbus服务)。
5、Dbus Bus在收到BinderAgent方法请求之后,将该方法发送给对应的Linux服务。
6、Linux在接收到方法调用之后,处理完成之后,将结果返回给Dbus Bus。步骤5-6和标准的dbus流程一致。
7、Dbus bus在收到方法结果之后,将结果发送给BinderAgent。
8、BinderAgent在收到方法结果之后,将结果的数据结构转换为Android序列,并将该结果返回给Android进程。
9、Android进程可以通过Binder调用Linux服务方法,并获取相关方法结果。
需要说明的是,通过本发明实施例将Dbus与Binder进程间通讯的融合,简化了Linux与Android系统之间调用的代码实现,利用各自系统的标准接口即可实现跨系统之间的调用。
下面对本发明提供的进程间通讯系统进行描述,下文描述的进程间通讯系统与上文描述的进程间通讯方法可相互对应参照。
请参见图9,本发明实施例提供了本发明还提供一种进程间通讯系统,包括:
第一同步模块,用于当监听到Linux进程注册Linux服务的消息时,通过Binder设备调用服务添加接口以使服务管理器添加第一同步服务;其中,所述第一同步服务与所述Linux服务为一一对应关系;
第二同步模块,用于当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务;其中,所述第二同步服务与所述Android服务为一一对应关系。
在一个实施例中,所述的进程间通讯系统还包括:
第一调用模块,用于当接收到所述Linux进程的第一调用请求时,将结构转换后的第一调用请求转发至与所述第二同步服务相对应的目标Android服务中,继而将所述目标Android服务反馈的第一调用结果进行结构转换后转发至所述Linux进程;
第二调用模块,用于当接收到所述Android进程的第二调用请求时,将结构转换后的第二调用请求转发至与所述第一同步服务相对应的目标Linux服务中,继而将所述目标Linux服务反馈的第二调用结果进行结构转换后转发至所述Android进程。
在一个实施例中,所述第二同步模块具体用于:
当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务,继而将所述Android服务的handle标识与所述第二同步服务进行关联绑定。
在一个实施例中,所述的进程间通讯系统还包括:
同步删除模块,用于当监听到所述Linux进程注销Linux服务的消息时,通过所述Binder设备调用服务删除接口以使所述服务管理器删除与所述Linux服务相对应的第一同步服务。
在一个实施例中,所述的进程间通讯系统还包括:
同步注销模块,用于当监听到Android进程删除Android服务的消息时,向Dbus总线发出服务注销指令以使所述Dbus总线注销与所述Android服务相对应的第二同步服务。
在一个实施例中,所述第一调用模块具体用于:
当接收到所述Linux进程通过所述Dbus总线发送的第一调用请求时,将所述第一调用请求的传入参数的数据结构转换为Android格式;
将结构转换后的第一调用请求通过Binder设备转发至与所述第二同步服务相对应的目标Android服务中;
接收所述目标Android服务根据所述第一调用请求反馈的第一调用结果,并将所述第一调用结果的数据结构转换为Linux格式后,将结构转换后的第一调用结果通过所述Dbus总线转发至所述Linux进程。
在一个实施例中,所述第二调用模块具体用于:
当接收到所述Android进程通过所述Binder设备发送的第二调用请求时,将所述第二调用请求的传入参数的数据结构转换为Linux格式;
将结构转换后的第二调用请求通过所述Dbus总线转发至与所述第一同步服务相对应的目标Linux服务中;
接收所述目标Linux服务根据所述第二调用请求反馈的第二调用结果,并将所述第二调用结果的数据结构转换为Android格式后,将结构转换后的第二调用结果通过所述Binder设备转发至所述Android进程。
在一个实施例中,所述Linux进程注册Linux服务的消息是由所述Dbus总线在注册所述Linux服务之后发出;所述Android进程添加Android服务的消息是由所述Android进程在确认所述Android服务被添加之后发出。
可以理解的是上述系统项实施例,是与本申请方法项实施例相对应的,本申请实施例提供的进程间通讯系统,可以实现本申请任意一项方法项实施例提供的进程间通讯方法。
本案实施例的进程间通讯系统的工作原理与上述实施例的进程间通讯方法是相应的,此处不再一一赘述。
图10示例了一种电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(Communications Interface)1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行所述的进程间通讯方法,该方法包括:当监听到Linux进程注册Linux服务的消息时,通过Binder设备调用服务添加接口以使服务管理器添加第一同步服务;其中,所述第一同步服务与所述Linux服务为一一对应关系;当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务;其中,所述第二同步服务与所述Android服务为一一对应关系。
此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各实施例所提供的进程间通讯方法,该方法包括:当监听到Linux进程注册Linux服务的消息时,通过Binder设备调用服务添加接口以使服务管理器添加第一同步服务;其中,所述第一同步服务与所述Linux服务为一一对应关系;当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务;其中,所述第二同步服务与所述Android服务为一一对应关系。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的进程间通讯方法,该方法包括:当监听到Linux进程注册Linux服务的消息时,通过Binder设备调用服务添加接口以使服务管理器添加第一同步服务;其中,所述第一同步服务与所述Linux服务为一一对应关系;当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务;其中,所述第二同步服务与所述Android服务为一一对应关系。
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (11)

1.一种进程间通讯方法,其特征在于,包括:
当监听到Linux进程注册Linux服务的消息时,通过Binder设备调用服务添加接口以使服务管理器添加第一同步服务;其中,所述第一同步服务与所述Linux服务为一一对应关系;
当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务;其中,所述第二同步服务与所述Android服务为一一对应关系。
2.根据权利要求1所述的进程间通讯方法,其特征在于,还包括:
当接收到所述Linux进程的第一调用请求时,将结构转换后的第一调用请求转发至与所述第二同步服务相对应的目标Android服务中,继而将所述目标Android服务反馈的第一调用结果进行结构转换后转发至所述Linux进程;
当接收到所述Android进程的第二调用请求时,将结构转换后的第二调用请求转发至与所述第一同步服务相对应的目标Linux服务中,继而将所述目标Linux服务反馈的第二调用结果进行结构转换后转发至所述Android进程。
3.根据权利要求1所述的进程间通讯方法,其特征在于,所述当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务,包括:
当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务,继而将所述Android服务的handle标识与所述第二同步服务进行关联绑定。
4.根据权利要求1所述的进程间通讯方法,其特征在于,还包括:
当监听到所述Linux进程注销Linux服务的消息时,通过所述Binder设备调用服务删除接口以使所述服务管理器删除与所述Linux服务相对应的第一同步服务。
5.根据权利要求1所述的进程间通讯方法,其特征在于,还包括:
当监听到Android进程删除Android服务的消息时,向Dbus总线发出服务注销指令以使所述Dbus总线注销与所述Android服务相对应的第二同步服务。
6.根据权利要求2所述的进程间通讯方法,其特征在于,当接收到所述Linux进程的第一调用请求时,将结构转换后的第一调用请求转发至与所述第二同步服务相对应的目标Android服务中,继而将所述目标Android服务反馈的第一调用结果进行结构转换后转发至所述Linux进程,包括:
当接收到所述Linux进程通过所述Dbus总线发送的第一调用请求时,将所述第一调用请求的传入参数的数据结构转换为Android格式;
将结构转换后的第一调用请求通过Binder设备转发至与所述第二同步服务相对应的目标Android服务中;
接收所述目标Android服务根据所述第一调用请求反馈的第一调用结果,并将所述第一调用结果的数据结构转换为Linux格式后,将结构转换后的第一调用结果通过所述Dbus总线转发至所述Linux进程。
7.根据权利要求2所述的进程间通讯方法,其特征在于,当接收到所述Android进程的第二调用请求时,将结构转换后的第二调用请求转发至与所述第一同步服务相对应的目标Linux服务中,继而将所述目标Linux服务反馈的第二调用结果进行结构转换后转发至所述Android进程,包括:
当接收到所述Android进程通过所述Binder设备发送的第二调用请求时,将所述第二调用请求的传入参数的数据结构转换为Linux格式;
将结构转换后的第二调用请求通过所述Dbus总线转发至与所述第一同步服务相对应的目标Linux服务中;
接收所述目标Linux服务根据所述第二调用请求反馈的第二调用结果,并将所述第二调用结果的数据结构转换为Android格式后,将结构转换后的第二调用结果通过所述Binder设备转发至所述Android进程。
8.根据权利要求1所述的进程间通讯方法,其特征在于,所述Linux进程注册Linux服务的消息是由所述Dbus总线在注册所述Linux服务之后发出;所述Android进程添加Android服务的消息是由所述Android进程在确认所述Android服务被添加之后发出。
9.一种进程间通讯系统,其特征在于,包括:
第一同步模块,用于当监听到Linux进程注册Linux服务的消息时,通过Binder设备调用服务添加接口以使服务管理器添加第一同步服务;其中,所述第一同步服务与所述Linux服务为一一对应关系;
第二同步模块,用于当监听到Android进程添加Android服务的消息时,向Dbus总线发出服务注册指令以使所述Dbus总线注册第二同步服务;其中,所述第二同步服务与所述Android服务为一一对应关系。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8任一项所述进程间通讯方法的步骤。
11.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述进程间通讯方法的步骤。
CN202111409285.0A 2021-11-25 2021-11-25 一种进程间通讯方法及系统 Active CN113821363B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202111409285.0A CN113821363B (zh) 2021-11-25 2021-11-25 一种进程间通讯方法及系统
PCT/CN2022/102065 WO2023093039A1 (zh) 2021-11-25 2022-06-28 一种进程间通讯方法及系统
US18/443,694 US20240231974A1 (en) 2021-11-25 2024-02-16 Method and system for inter-process communication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111409285.0A CN113821363B (zh) 2021-11-25 2021-11-25 一种进程间通讯方法及系统

Publications (2)

Publication Number Publication Date
CN113821363A true CN113821363A (zh) 2021-12-21
CN113821363B CN113821363B (zh) 2022-03-01

Family

ID=78918228

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111409285.0A Active CN113821363B (zh) 2021-11-25 2021-11-25 一种进程间通讯方法及系统

Country Status (3)

Country Link
US (1) US20240231974A1 (zh)
CN (1) CN113821363B (zh)
WO (1) WO2023093039A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023093039A1 (zh) * 2021-11-25 2023-06-01 北京字节跳动网络技术有限公司 一种进程间通讯方法及系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117097795B (zh) * 2023-10-19 2024-01-23 飞天诚信科技股份有限公司 一种Android智能设备数据通讯方法及装置
CN117873757B (zh) * 2024-03-12 2024-06-04 中科南京软件技术研究院 一种适用于多种异形物理接口设备的通信的轻量级软总线的方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0689137A2 (en) * 1994-06-22 1995-12-27 International Business Machines Corporation Message control structure registration method and apparatus for a microkernel data processing system
US6349342B1 (en) * 1995-03-22 2002-02-19 Sun Microsystems, Inc. Methods and apparatus for managing computer processes
US20120084480A1 (en) * 2010-10-01 2012-04-05 Imerj LLC Auto-configuration of a docked system in a multi-os environment
CN105260250A (zh) * 2015-09-10 2016-01-20 烽火通信科技股份有限公司 一种Linux系统与Android系统的双系统通信装置
CN105279036A (zh) * 2015-12-04 2016-01-27 上海斐讯数据通信技术有限公司 进程间通信方法、装置及电子设备
CN106547567A (zh) * 2016-11-25 2017-03-29 山东大学 一种安卓系统中多业务下进程间通信系统及其实现方法
CN112749017A (zh) * 2019-10-31 2021-05-04 中兴通讯股份有限公司 移动通信方法及装置、存储介质、电子装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106293955A (zh) * 2015-05-19 2017-01-04 中国石油化工股份有限公司 一种应用进程间的通信方法
US10313854B2 (en) * 2017-11-08 2019-06-04 International Business Machines Corporation Listing service registrations through a mobile number
CN112068968B (zh) * 2019-06-11 2022-10-18 成都鼎桥通信技术有限公司 一种双系统终端的服务访问方法和装置
CN111049854B (zh) * 2019-12-25 2021-12-14 微民保险代理有限公司 一种服务请求的传输方法和装置
CN113419783B (zh) * 2021-04-27 2023-09-19 中国电子科技集团公司第十四研究所 一种跨平台多进程的插件管理与过程调用方法
CN113821363B (zh) * 2021-11-25 2022-03-01 北京鲸鲮信息系统技术有限公司 一种进程间通讯方法及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0689137A2 (en) * 1994-06-22 1995-12-27 International Business Machines Corporation Message control structure registration method and apparatus for a microkernel data processing system
US6349342B1 (en) * 1995-03-22 2002-02-19 Sun Microsystems, Inc. Methods and apparatus for managing computer processes
US20120084480A1 (en) * 2010-10-01 2012-04-05 Imerj LLC Auto-configuration of a docked system in a multi-os environment
CN105260250A (zh) * 2015-09-10 2016-01-20 烽火通信科技股份有限公司 一种Linux系统与Android系统的双系统通信装置
CN105279036A (zh) * 2015-12-04 2016-01-27 上海斐讯数据通信技术有限公司 进程间通信方法、装置及电子设备
CN106547567A (zh) * 2016-11-25 2017-03-29 山东大学 一种安卓系统中多业务下进程间通信系统及其实现方法
CN112749017A (zh) * 2019-10-31 2021-05-04 中兴通讯股份有限公司 移动通信方法及装置、存储介质、电子装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023093039A1 (zh) * 2021-11-25 2023-06-01 北京字节跳动网络技术有限公司 一种进程间通讯方法及系统

Also Published As

Publication number Publication date
US20240231974A1 (en) 2024-07-11
WO2023093039A1 (zh) 2023-06-01
CN113821363B (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
CN113821363B (zh) 一种进程间通讯方法及系统
CN110661662B (zh) 一种轻量级的微服务配置方法
CN101848107B (zh) Snmp网元及snmp网元与私有协议网元通信的方法
CN109451020B (zh) 超时管理方法、设备及计算机可读存储介质
CN112596931B (zh) 一种跨进程通信方法、装置、电子设备及存储介质
CN110958206A (zh) 一种基于虚拟化的移动设备应用的数据保密方法
CN108712320A (zh) 消息推送方法及装置
CN111694620B (zh) 第三方业务的交互方法、装置、设备及计算机存储介质
CN114138500A (zh) 资源调度系统及方法
CA2384066C (en) Remote assembly of messages for distributed applications
CN115913742A (zh) 单向数据传输方法及系统、外网客户端
CN106357654B (zh) 远程过程调用方法、装置及通信系统
CN110768818B (zh) 一种网络管理方法和装置
CN104486330A (zh) 一种基于远程过程调用的双向通信系统
WO2024103943A1 (zh) 一种业务处理方法、装置、存储介质及设备
CN113824653A (zh) 一种兼容多协议业务接入的方法和系统
WO2021093671A1 (zh) 任务处理方法、系统、装置、设备及计算机可读存储介质
WO2019201111A1 (zh) 信息处理方法、装置、设备及计算机可读存储介质
CN114338584B (zh) 消息撤回方法和消息传输系统
CN103347038A (zh) 一种WEB服务器处理http报文的方法
CN111917816B (zh) 服务应用独立式架构系统
CN109495331A (zh) 网管系统的系统监控方法及装置
CN113973139A (zh) 一种消息处理的方法和装置
CN110381147B (zh) 呼叫中心中人工座席的操作系统及操作方法
CN110691002B (zh) 一种中断检测方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220407

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

Address before: 2005, floor 2, No. 39, West Street, Haidian District, Beijing 100080

Patentee before: Beijing jingling Information System Technology Co.,Ltd.