0

我正在使用 GDbus 并进行 dbus 通信。它使用会话总线。

问题是 dbus 启动。

我在 Yocto 中使用 c++11 运行 dbus。而且,我必须导出 $(dbus-launch)。

但是,我想在启动时导出 $(dbus-launch) 或相同的东西。因为 dbus 是由 systemd 启动的。

4

2 回答 2

1

一种解决方案是有一个添加环境变量的配方:

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)
于 2017-12-07T12:57:19.373 回答
0

/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=")
于 2019-03-27T05:22:30.723 回答