【发布时间】:2017-12-07 12:50:32
【问题描述】:
我正在使用 GDbus 并进行 dbus 通信。 它使用会话总线。
问题是 dbus-launch。
我在 Yocto 中使用 c++11 运行 dbus。 而且,我必须导出 $(dbus-launch)。
但是,我想在启动时导出 $(dbus-launch) 或相同的东西。 因为 dbus 是由 systemd 启动的。
【问题讨论】:
我正在使用 GDbus 并进行 dbus 通信。 它使用会话总线。
问题是 dbus-launch。
我在 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)
【讨论】:
chmod ugo+x /etc/profile.d/yourscript.sh 还有哪些应用需要导出的变量?
EnvironmentFile=/tmp/dbus-session和ExecStartPre=/usr/bin/dbus-session-env.sh和dbus-session-env.sh做dbus-launch > /tmp/dbus-session然后你可以通过DBUS_SESSION_BUS_ADDRESS和DBUS_SESSION_BUS_PID在ExecStart。
在/etc/profile 或$HOME/.profile 或$HOME/.bashrc 中使用此命令:
eval \`dbus-launch --auto-syntax`
这将导出具有适当值的"DBUS_SESSION_BUS_ADDRESS" 和"DBUS_SESSION_BUS_PID"
你也可以使用this script:
[[ -n $SSH_CLIENT ]] && export $(cat /proc/$(command pgrep -u "$USER" -f -- "dbus-daemon --session" )/environ| tr '\0' '\n' | command grep "DBUS_SESSION_BUS_ADDRESS=")
【讨论】: