1.dbus例子和文档
手册:https://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-overview
api:https://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
例子:http://www.matthew.ath.cx/articles/dbus
网站中有说明和例子dbus-example.c
2.配置文件
将配置文件放到/etc/dbus-1/system.d/下
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<policy user="root">
<allow own="test.signal.sink"/>
<allow send_destination="test.signal.sink"/>
<allow send_interface="test.signal.sink"/>
<allow own="test.signal.source"/>
<allow send_destination="test.signal.source"/>
<allow send_interface="test.signal.source"/>
<allow own="test.method.server"/>
<allow send_destination="test.method.server"/>
<allow send_interface="test.method.server"/>
</policy>
<policy at_console="true">
<allow send_destination="test.signal.sink"/>
<allow send_interface="test.signal.sink"/>
<allow send_destination="test.signal.source"/>
<allow send_interface="test.signal.source"/>
<allow send_destination="test.method.server"/>
<allow send_interface="test.method.server"/>
</policy>
<policy context="default">
<deny own="test.signal.sink"/>
<deny send_destination="test.signal.sink"/>
<deny send_interface="test.signal.sink"/>
<deny own="test.signal.source"/>
<deny send_destination="test.signal.source"/>
<deny send_interface="test.signal.source"/>
<deny own="test.method.server"/>
<deny send_destination="test.method.server"/>
<deny send_interface="test.method.server"/>
</policy>
<limit name="max_replies_per_connection">512</limit>
</busconfig>
3.遇到的问题
3.1 process 3709: Applications must not close shared connections - see dbus_connection_close() docs. This is a bug in the application.
将发送函数dbusSendSignal中的dbus_connection_close(conn);去掉
3.2 多进程使用同一条总线dbus_bus_request_name失败问题
查看错误原因,多进程使用同一总线时要在dbus_bus_request_name时添加DBUS_NAME_FLAG_ALLOW_REPLACEMENT标志