如何删除以前添加的sd-bus匹配

时间:2017-02-21 09:28:21

标签: dbus

我创建了sd_bus,然后通过使用sd_bus_add_match()指定匹配并从sd-bus获取信号来注册信号。现在我想知道如何在不调用sd_bus_close()的情况下停止获取特定匹配的事件。

1 个答案:

答案 0 :(得分:1)

据我所知,阅读源代码,似乎你必须将sd_bus_slot **传递给sd_bus_add_match;它将为您创建一个类型为BUS_MATCH_CALLBACK 一旦完成,只需取消你的sd_bus_slot,它将负责破坏匹配并释放所有资源。请参见此处:https://github.com/systemd/systemd/blob/a7753693547233e4a1d6e10b1a8f6515a477f227/src/libsystemd/sd-bus/bus-slot.c#L68(请注意,bus_slot_disconnect由sd_bus_slot_unref()调用。