几周前,我决定为我的家构建一些树莓派项目。因为我意识到我将需要相同的传感器数据用于多个应用程序,所以我将我的传感器放在一个进程中。通过将此进程连接到 DBus,我可以使用其他应用程序读取传感器数据。当我使用 ssh -X 选项连接到我的 raspberrypi 时,这非常有效,我在其中共享了 xserver。如果我不共享 xserver,我会收到错误消息:
无法连接到 D-Bus 会话总线。要启动它,请运行:
eval `dbus-launch --auto-syntax`
当然,我尝试运行eval dbus-launch --auto-syntax
使错误消失的命令,但我仍然无法通过 DBus 访问数据。
怎么了?我不能在没有 xserver 的情况下启动 DBus 应用程序吗?如果我可以在没有 xserver 的情况下启动我的传感器进程,那就太好了,因为我想将它作为 init.d 中的服务启动。
有没有人有类似的问题?
我不能在没有 xserver 的情况下启动 DBus 应用程序吗?
当然,应用程序只需要知道总线地址。对于会话总线,这意味着DBUS_SESSION_BUS_ADDRESS
需要设置环境变量(X11 确实可以用作自动启动会话的后备方法,但环境变量是连接到现有会话的正确方法)。
在您的情况下,我会考虑使用系统总线:这听起来像是传感器 API 的正确位置,而嵌入式设备确实不需要多于一条总线。使用系统总线,即使通过 SSH 连接,您也不需要设置地址(但您可能需要确保服务策略允许应用程序用户向服务发送消息)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句