dbus --- 简介
官方资料:https://www.freedesktop.org/wiki/Software/dbus/
dbus 源码库(https://gitlab.freedesktop.org/dbus/dbus),libdbus 是 dbus 库的一部分,libdbus 是 low-level API,下图所有的程序,都是通过 libdbus 实现,源码位于 dbus 库,但是应用开发不建议使用 dbus 库
D-Bus 是一个消息通信系统,是 Linux 上的一种进程间通信方式,内部使用 socket 技术实现。dbus-daemon
是D-Bus
的守护进程,负责管理消息的路由和应用程序的注册。
D-Bus有两种类型的消息总线,分别是系统总线和会话总线,
- system bus: 系统总线。顾名思义,系统级服务。和常规服务分来是为了避免消息拥塞造成延迟或卡顿。
- session bus: 会话总线。常规服务使用。
应用程序可以在总线上注册 D-Bus 服务,一个服务可以包含多个对象,一个对象可以包含多个接口,一个接口可以包含多个方法、属性、信号(都是API)
为了使服务的方法可以被其他应用程序所调用,对象必须在D-Bus守护进程中进行注册。这种在D-Bus中注册对象的行为称为exporting。
每个对象都有一个路径格式的唯一标识符。例如,代表蓝牙设备的对象是/org/bluez/hci0/dev_4c_4c_d7_64_cd_22_0a的路径标识符。 对象使用其路径注册到D-Bus守护进程,使D-Bus守护程序可以路由到对象。
对象的接口可以发出(Signal)信号, 信号可以认为是一个事件。 应用程序可以订阅自己感兴趣的信号, 一个信号可以被一个或多个应用程序订阅。信号触发后,会被传送到每一个订阅该信号的应用程序中。
每个服务都有一个名称,比如以冒号开头的:1.16。但是可以注册一个名称代替冒号开头的形式。比如蓝牙守护进程就是一个D-Bus服务,它拥有一个众所周知的名称(well-known bus name):org.bluez。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2023-07-16 linux 内存管理 --- 用户空间 malloc 内存申请原理
2017-07-16 MAC地址的介绍(单播、广播、组播、数据收发)
2017-07-16 OSI 七层模型和 TCP/IP 四层模型 及 相关网络协议