几周前,我决定为我的家建立几个覆盆子项目。因为我认识到我需要对多种应用程序使用相同的sensordata,所以我将传感器放在一个过程中。通过将此过程连接到DBus,我可以使用其他应用程序读取sensordata。当我使用ssh -X选项连接到我的raspberrypi时,这非常好用,我在那里共享xserver。如果我不共享xserver,我会收到错误:
无法连接到D-Bus会话总线。 要启动它,请运行:
eval `dbus-launch --auto-syntax`
当然,我试图运行命令eval dbus-launch --auto-syntax
,这使得错误消失,但我仍然无法通过DBus访问数据。
有什么问题?我不能在没有xserver的情况下启动DBus应用程序吗?如果我可以在没有xserver的情况下启动我的传感器进程,那将是很好的,因为我想在init.d中将它作为服务启动。
是否有人有类似问题?
答案 0 :(得分:1)
我不能在没有xserver的情况下启动DBus应用程序吗?
当然,应用程序只需要知道总线地址。对于会话总线,这意味着需要设置DBUS_SESSION_BUS_ADDRESS
环境变量(X11确实可以用作自动启动会话的回退方法,但环境变量是连接到现有会话的正确方法)。
在您的情况下,我考虑使用系统总线:这听起来像传感器API的正确位置,嵌入式设备真的不需要多个总线。使用系统总线,即使通过SSH连接也不需要设置地址(但您可能需要确保服务策略允许应用程序用户向服务发送消息)。