几个基本的dbus问题

Posted

技术标签:

【中文标题】几个基本的dbus问题【英文标题】:several basic dbus questions 【发布时间】:2013-11-26 23:32:36 【问题描述】:

我是 dbus 的新手,我正在尝试了解如何使用它,但我似乎找不到我想要的答案。

我是否正确,我可以发明自己的服务名称,只要它们是唯一的并且不与任何其他服务名称冲突?

当我调用 dbus_bus_request_name() 请求我自己的服务名称时,我收到一条错误消息,指出由于配置文件中的安全策略,我不允许拥有该服务。在查看 /etc/dbus-1 配置目录时,似乎有一个系统配置文件(/etc/dbus-1/system.conf),然后是用于各种服务的其他配置文件的子目录(/etc/ dbus-1/system.d 子目录)。

我使用其他 .conf 文件作为示例为我的服务名称添加了一个配置文件。但我没有看到 system.conf 文件读取任何单独的 .conf 文件。我是否正确地假设单个配置文件会以某种方式被读取?那么,在编辑 system.d 目录中的单个 .conf 文件之后,或者像我一样添加新的服务配置文件之后,如何让系统总线重新读取 system.conf 文件?

这是配置系统总线的正确方法,以便我可以有 2 个进程传递消息吗?我的应用程序是一个由多个进程组成的封闭应用程序,因此我打算通过系统 dbus 进行的唯一通信将仅在我自己的进程之间进行,而不是在任何其他公共或其他知名服务之间。

谢谢,

-安德烈斯

【问题讨论】:

【参考方案1】:

我是否正确,我可以发明自己的服务名称,只要它们是唯一的并且不与任何其他服务名称冲突?

是的

当我调用 dbus_bus_request_name() 请求我自己的服务名称时,我收到一条错误消息,指出由于配置文件中的安全策略,我不允许拥有该服务。

我猜你正在使用 SYSTEM 总线。除非有使用 SYSTEM 总线的理由,否则使用 SESSION 总线会更容易,尤其是在测试时。 SYSTEM 总线还使用其他安全性东西来确保系统的安全性,看看一些服务的配置文件,它们展示了如何允许某些服务在总线上拥有特定的名称。

我是否正确地假设单个配置文件会以某种方式被读取?

是的,如果您查看 system.conf,您可以看到 <includedir> 标记,它将包含该目录中的所有内容。

那么,在编辑 system.d 目录中的单个 .conf 文件后,或者像我一样添加新的服务配置文件后,如何让系统总线重新读取 system.conf 文件?

向 dbus-daemon 发送 SIGHUP

这是配置系统总线的正确方法,以便我可以有 2 个进程传递消息吗?

应该可以的。

【讨论】:

非常感谢您的回答——他们非常有帮助。我特别感谢您回答了我提出的每个问题。很多时候,我们在这里得到了一般性的答案,但是您花时间对我的每个问题发表评论。非常感谢!

以上是关于几个基本的dbus问题的主要内容,如果未能解决你的问题,请参考以下文章

Pi - 启用 dbus 进行开发

如何使用 CMake 配置 DBus 依赖项

通过 Dbus 联系 Pulse Audio

DBus学习网站

在python中向dbus对象添加方法

如何使用 C 编程从 dbus 传递/返回结构?