我想了解有关 Linux 中的 DBus 的更多信息。qbus
在 Ubuntu 16.04 的终端上执行后,我看到:
:1.0
com.ubuntu.Upstart
:1.1
:1.11
org.freedesktop.PowerManagement
org.xfce.PowerManager
:1.12
:1.13
:1.15
:1.16
ca.desrt.dconf
...
这是什么:1.0
意思?为什么我在多行中看到这样的数字?我从手册(--help
)中知道,这com.ubuntu.Upstart
是指服务名称。因为,使用 0 个参数,qdbus 将列出总线上可用的服务。所以,如果我运行qdbus com.ubuntu.Upstart
,它会返回:
/
/com
/com/ubuntu
/com/ubuntu/Upstart
/com/ubuntu/Upstart/jobs
/com/ubuntu/Upstart/jobs/at_2dspi2_2dregistryd
/com/ubuntu/Upstart/jobs/dbus
...
我的猜测是,上述路径是文件系统中找不到的 DBus 对象。但是,我如何解释有关这些对象的更多细节?因为我们可以创建多个总线。我的最后一个问题是,我们如何才能看到系统中所有可用总线的列表?
谢谢。
答案1
从 https://dbus.freedesktop.org/doc/dbus-tutorial.html#interfaces
当每个应用程序连接到总线守护程序时,守护程序会立即为其分配一个名称,称为唯一连接名称。唯一名称以“:”(冒号)字符开头。这些名称在总线守护程序的生命周期内永远不会重复使用 - 也就是说,您知道给定的名称将始终引用同一个应用程序。唯一名称的一个示例可能是 :34-907。冒号后的数字除了唯一性之外没有其他含义。
再往前走一点
应用程序可能会要求拥有其他知名名称。例如,您可以编写规范来定义名为 com.mycompany.TextEditor 的名称。您的定义可以指定,要拥有此名称,应用程序应在路径 /com/mycompany/TextFileManager 处有一个支持接口 org.freedesktop.FileHandler 的对象。
因此,像 :1.123 这样的值只是一个唯一名称,但它也可能在列表中的某个地方以人类可读的名称引用