Dbus 基本介绍
Dbus是什么
D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。它是个3层架构的IPC 系统,包括:
1、函数库libdbus ,用于两个应用程序互相联系和交互消息。
2、一个基于libdbus构造的消息总线守护进程(Daemon bus),可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。
3、基于特定应用程序框架的封装库或捆绑(wrapper libraries or bindings )。例如,libdbus-glib和libdbus-qt,还有绑定在其他语言,例如Python的。大多数开发者都是使用这些封装库的API,因为它们简化了D-Bus编程细节。libdbus被有意设计成为更高层次绑定的底层后端(low-levelbackend )。大部分libdbus的 API仅仅是为了用来实现绑定。
NOTE:
The low-level API for DBUS is written in C but most of the documentation and code is written for a higher level binding, such as Python or GLib.
you should not use this API unless you absolutely have to. Application developers should use one of the bindings if at all possible. If you are writing in C then the GLib bindings are recommended
DBUS 基本概念:
1.Dbus由对象、消息、连接、Dbus后台几部分组成。
2.
Daemon dbus 的分类
D-Bus分两种,system bus和session bus:
一个持久的系统总线(system bus):
它在引导时就会启动。这个总线由操作系统和后台进程使用,安全性非常好,以使得任意的应用程序不能欺骗系统事件。它是桌面会话和操作系统的通信,这里操作系统一般而言包括内核和系统守护进程。这种通道的最常用的方面就是发送系统消息,比如:插入一个新的存储设备;有新的网络连接;等等。
还将有很多会话总线(session buses):
这些总线当用户登录后启动,属于那个用户私有。它是用户的应用程序用来通信的一个会话总线。同一个桌面会话中两个桌面应用程序的通信,可使得桌面会话作为整体集成在一起以解决进程生命周期的相关问题。这在GNOME和KDE桌面中大量使用。
不同的系统在使用daemon dbus时,有两个选择,可以选择system bus, 简单些;也可以使用session bus; 手机不象PC那样有多用户,手机一般就单用户,所以手机系统就一个session, 所以,用system bus和session bus来讲区别不大。根据各个系统的不同,可能所有的程序都挂载到system bus上,也可能都挂载到session bus上面.
Dbus架构
Dbus 工作机制
Dbus应用

浙公网安备 33010602011771号