我正在使用 GDbus 并进行 dbus 通信。它使用会话总线。
问题是 dbus 启动。
我在 Yocto 中使用 c++11 运行 dbus。而且,我必须导出 $(dbus-launch)。
但是,我想在启动时导出 $(dbus-launch) 或相同的东西。因为 dbus 是由 systemd 启动的。
一种解决方案是有一个添加环境变量的配方:
SRC_URI += "file://dbus-env.sh"
do_install_append() {
install -d -m 0755 ${D}${sysconfdir}/profile.d
install -m 0755 ${WORKDIR}/dbus-env.sh ${D}${sysconfdir}/profile.d/
}
FILES_${PN} += "${sysconfdir}/profile.d/dbus-env.sh"
使用 dbus-env.sh
#!/bin/sh
export $(dbus-launch)
/etc/profile
在or$HOME/.profile
或中使用此命令$HOME/.bashrc
:
eval \`dbus-launch --auto-syntax`
这将导出"DBUS_SESSION_BUS_ADDRESS"
并"DBUS_SESSION_BUS_PID"
具有适当的值
你也可以使用这个脚本:
[[ -n $SSH_CLIENT ]] && export $(cat /proc/$(command pgrep -u "$USER" -f -- "dbus-daemon --session" )/environ| tr '\0' '\n' | command grep "DBUS_SESSION_BUS_ADDRESS=")