如果您使用Linux已有一段时间,您可能想知道什么是D-Bus。 D-Bus是最近整合到Linux桌面发行版中的组件,有望在Linux编程中发挥非常重要的作用。
什么是D-Bus?
D-Bus是起源非常不同的应用程序之间的通信系统。 使用该系统,我们甚至可以调用专有应用程序(如果它们实现了D-Bus)。 它的作用与库不同,因为库不是独立程序,并且库是可执行文件的一部分。 D-Bus的灵感来自Windows OLE,COM和ActiveX对象。 Windows COM对象提供了一种从另一个程序调用任何程序的简单方法,甚至可以在不使用相同编程语言的情况下直观地将其嵌入另一个程序中。 D-Bus并没有那么远,但是提供了UNIX所缺乏的通信。
为什么D-Bus很重要?
鉴于可以在Linux中使用的多种语言以及各种库,D-Bus非常重要。 让我们举一个实际的例子。 我想从Node.js中的应用程序向Ubuntu的notify-osd系统发送通知。 首先,您必须查看系统中哪些库提供了此功能,在这种情况下请进行libnotify,然后应该进行一些绑定,以便能够从JavaScript调用用C语言编程的库。 还要想象一下,我们想在不使用libnotify进行通知的桌面上运行应用程序。
使用D-Bus
因此,我们决定将使用D-Bus在JavaScript中创建应用程序通知。
https://gist.github.com/AdrianArroyoCalle/99d2ea6db92e90a54e2c
D-Bus中有两种类型的总线,即系统的唯一D-Bus和每个用户会话的D-Bus。 然后,在D-Bus中,我们提供的服务就是“ D-Bus提供程序的名称”,类似于D-Bus应用程序。 然后,在类似文件夹的结构中是该服务或实例可以具有的对象,最后,接口是与该服务的对象进行交互的方式。 在这种情况下,这是非常多余的,因为通知服务器非常简单。
谁在使用D-Bus?
使用D-Bus的程序超出您的想象。 仅举几个例子,一些D-Bus服务是:
- com.Skype.API
- 共同标准
- org.freedesktop.PolicyKit1
- org.gnome.Nautilus
- 组织.debian.apt
- com.ubuntu.upstart
要了解已安装的所有D-Bus服务,可以使用d-feet
有趣。 这么长时间的观看,我什至不知道那是什么
如果我不了解d-feet,我已经编写了一些东西,特别是使用DBus和真实信息编写了XChat(Clementine,Audacious)脚本,知道了此工具将使我免于阅读MPRIS手册和不同的Clementine和Audacious DBus接口。
这确实是一篇很好的文章,谢谢
看看我的无知,freebsd,gentoo和debian中dbus的很多问题,我不知道它是什么...实际上我仍然不知道,但是您的帖子至少给了我一个大概的主意。
> D-Bus是不久前Linux桌面发行版中的内置组件。
不久前自2005年以来,我一直在使用它。
另一件事是最近的kdbus。 简单来说,就是将dbus集成到内核中。
这仍然是很短的时间,因为D-Bus要求其余的系统组件开始使用它才能完全发挥作用,这仍然是最短的时间。