Qt D-Bus介绍

前言:

简单的说,进程间通信是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。同时一个程序可以是多进程,也可以是单进程,所以进程间通信也能实现软件间的通信服务。常见的进程间通信方式有:共享内存、Socket、管道、消息队列等;

简介:

D-Bus最初就是为Linux设计的一种进程间通信(IPC)和远程过程调用(RPC)机制,它采用了统一的协议进行底层通信,具有低延迟、低开销、高可用性的优点。它还能实现系统内核级进程和普通用户进程间的通信,如硬件驱动服务和打印机服务,串口读取等。它使用二进制消息传递协议,适合同机通信,由freedesktop.org项目提供,使用GPL许可证发行。D-Bus的主要概念为总线,注册后的进程可通过总线接收或传递消息,进程也可注册后等待内核事件响应,例如等待网络状态的转变或者计算机发出关机指令,当在总线上通信时,应用程序可以查询哪些其他应用程序和服务可用,并根据需要激活其中一个。在注册总线时分为了系统总线和会话总线。

消息传递:

在Qt 框架中对D-Bus进行了底层封装,客户不需要知道底层具体的通信方式,且实现了Qt 信号与槽方式的消息传递机制。

在注册总线通信时,会创建一个服务名称,应用给同一总线上的其他服务发现改服务,类似IP地址的概念,注册的服务名必须具有唯一性。服务名格式通常:由字母和数字组成的点分隔序列。通常的做法甚至是根据定义该服务的组织的域名来命名服务名称。

例:org.freedesktop.DBus

如网络通信类似,在总线上提供服务需要将提供服务的对象导出,用以向其他应用程序提供特殊服务,D_Bus对象注册与文件路径类似,是以斜杠分隔的标签,每个标签由字母、数字和下划线字符(“_”)组成。它们必须始终以斜杠开头,而不能以斜杠结尾。

声明接口:

接口的声明类似C++的抽象接口类,是声明一种可用的方法,类似函数调用与被调用者的关系,在Qt框架中,D-Bus接口的声明同它的插件声明方式类似,通过Q_DECLARE_INTERFACE()宏与一个惟一的标识符相关联,标识符通常由定义该接口的实体的域名构造。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值