c - dbus 如何重新连接到新的 session 总线守护进程

标签 c daemon dbus c-api

据我了解,如果环境定义了两个变量,则 dbus 用户将连接到 session 总线守护进程:

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-1cAnv4I,guid=3a453c40b5034f
DBUS_SESSION_BUS_PID=102

如果守护进程停止并且我们通过 dbus-launch 启动一个新的守护进程,我们将获得环境的新值。在这种情况下,如何在不重新启动的情况下将新值传播到正在运行的用户进程中?

最佳答案

重启后获取地址的一种方法是查询相应的 X11 属性:

dbus-daemon 设置 _DBUS_SESSION_BUS_SELECTION_[hostname]_[uuid] 选择所有者的 _DBUS_SESSION_BUS_ADDRESS 属性(uuid 是 /var/lib/dbus/machine 的内容-id )。这是我用来读取此值的代码:https://github.com/sidorares/node-dbus/blob/master/lib/address-x11.js

关于c - dbus 如何重新连接到新的 session 总线守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25023469/

相关文章:

c - 乱码输出

c++ - 通用守护进程/服务器设计 - 最佳实践(C/C++、Linux)

PHP 作为守护进程/服务

linux - update-rc.d 禁用/删除不会删除 etc/init.d/rc* 引用

java - java 中的 freedesktop.org 通知

c++ - 我如何在 C++ 中删除/插入数组的元素

c - C 语言中 if 与字符串的逻辑条件

dbus - D 总线 : Performance improvement practices

c - 有没有办法从字符串中获取 evdev 键码?

c++ - 包含源中的 Qt undefined reference