如何导出 DBUS_SESSION_BUS_ADDRESS
How to export DBUS_SESSION_BUS_ADDRESS
我正在尝试 运行 嵌入式系统 (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
我意识到我需要先启动 dbus-daemon
,所以我从命令行得到 运行 dbus-launch
。
这会打印出 DBUS_SESSION_BUS_ADDRESS
的值,但我如何以编程方式导出它?
我终于找到了答案,运行以下命令导出 dbus-launch 的输出:
export $(dbus-launch)
在终端中输入:
export $DBUS_SESSION_BUS_ADDRESS
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}
请确保用户设置了 DISPLAY 变量。
另一种选择是:
export $(dbus-launch)
在终端中输入以下命令:
eval `dbus-launch --auto-syntax`
听起来您正在尝试获取 DBUS_SESSION_BUS_ADDRESS 的值以使您的应用程序正确地 运行。尝试 运行 使用 dbus-run-session 代替 dbus-launch。根据 https://dbus.freedesktop.org/doc/dbus-launch.1.html
dbus-launch 不应该是来自命令行的 运行,而是在 shell 脚本中
(另见 https://dbus.freedesktop.org/doc/dbus-run-session.1.html)。
我正在尝试 运行 嵌入式系统 (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
我意识到我需要先启动 dbus-daemon
,所以我从命令行得到 运行 dbus-launch
。
这会打印出 DBUS_SESSION_BUS_ADDRESS
的值,但我如何以编程方式导出它?
我终于找到了答案,运行以下命令导出 dbus-launch 的输出:
export $(dbus-launch)
在终端中输入:
export $DBUS_SESSION_BUS_ADDRESS
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}
请确保用户设置了 DISPLAY 变量。
另一种选择是:
export $(dbus-launch)
在终端中输入以下命令:
eval `dbus-launch --auto-syntax`
听起来您正在尝试获取 DBUS_SESSION_BUS_ADDRESS 的值以使您的应用程序正确地 运行。尝试 运行 使用 dbus-run-session 代替 dbus-launch。根据 https://dbus.freedesktop.org/doc/dbus-launch.1.html dbus-launch 不应该是来自命令行的 运行,而是在 shell 脚本中 (另见 https://dbus.freedesktop.org/doc/dbus-run-session.1.html)。