C dbus示例-on_name_在获得on_name_后中间丢失
我可以使用dbus作为客户机,但是如果我编译 调用on_name_获取的回调,并在on_name_丢失的回调之后调用中间回调。 我所做的唯一更改是使用G_总线类型的系统,而不是G_总线类型的会话C dbus示例-on_name_在获得on_name_后中间丢失,c,dbus,C,Dbus,我可以使用dbus作为客户机,但是如果我编译 调用on_name_获取的回调,并在on_name_丢失的回调之后调用中间回调。 我所做的唯一更改是使用G_总线类型的系统,而不是G_总线类型的会话 我只是猜测这是一些身份验证问题。与会话总线不同,系统总线有一个安全策略,防止任意进程在总线上声明任意已知名称。您需要为系统总线安装一个,以允许您的服务拥有一个名称: 当出现以下情况时,将检查带有own或own\u前缀属性的规则: 连接尝试拥有已知的总线名称。作为特例,, own=“*”匹配任何已知的总线
我只是猜测这是一些身份验证问题。与会话总线不同,系统总线有一个安全策略,防止任意进程在总线上声明任意已知名称。您需要为系统总线安装一个,以允许您的服务拥有一个名称: 当出现以下情况时,将检查带有
own
或own\u前缀
属性的规则:
连接尝试拥有已知的总线名称。作为特例,,
own=“*”
匹配任何已知的总线名称。著名的会话总线
通常允许任何连接拥有任何名称,而
系统总线通常不允许任何连接拥有任何名称,
除非进一步配置允许。系统服务
将拥有一个名称,必须安装允许他们这样做的配置,
通常通过规则的形式<代码>是相关的阅读
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Only my-service-user can own the service -->
<policy user="my-service-user">
<allow own="org.mydomain.MyService1"/>
</policy>
<!-- Anyone can send messages to the service -->
<policy context="default">
<allow send_destination="org.mydomain.MyService1"/>
</policy>
</busconfig>