如何导出DBUS_SESSION_BUS_ADDRESS

Nei*_*eil 6 linux dbus yocto

我正在尝试在嵌入式系统(Yocto Linux)上运行D-Bus,并从我的应用程序代码连接到它.

我打电话时收到以下错误 dbus_bus_get(DBUS_BUS_SESSION, &err);

Using X11 for dbus-daemon autolaunch was disabled at compile time, set your DBUS_SESSION_BUS_ADDRESS instead
Run Code Online (Sandbox Code Playgroud)

我意识到我需要启动第dbus-daemon一个,所以我从命令行运行dbus-launch.这打印出一个值,DBUS_SESSION_BUS_ADDRESS但我怎么能以编程方式导出它?

谢谢您的帮助

Nei*_*eil 18

我终于找到了答案,运行以下命令导出dbus-launch的输出:

export $(dbus-launch)
Run Code Online (Sandbox Code Playgroud)

  • 这将启动一个新的“dbus-daemon”进程。这是可取的吗? (4认同)

小智 8

pid_gnome=$(pgrep gnome-session)
DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/${pid_gnome}/environ|cut -d= -f2-)
export DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS}
Run Code Online (Sandbox Code Playgroud)

请确保用户设置了 DISPLAY 变量。

另一种选择是:

export $(dbus-launch)
Run Code Online (Sandbox Code Playgroud)


小智 7

在终端中输入以下命令:

eval `dbus-launch --auto-syntax`
Run Code Online (Sandbox Code Playgroud)

  • 感谢您提供此代码片段,它可能会提供一些有限的即时帮助。[正确的解释](https://meta.stackexchange.com/q/114762/349538)将通过展示为什么这是一个很好的问题解决方案来极大地提高其长期价值,并将使其对未来的读者更有用与其他类似的问题。请[编辑]您的答案以添加一些解释,包括您所做的假设。 (8认同)