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

Posted

技术标签:

【中文标题】如何删除以前添加的 sd-bus 匹配【英文标题】:how to remove previously added sd-bus match 【发布时间】:2017-07-10 20:19:22 【问题描述】:

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

【问题讨论】:

【参考方案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() 调用。

【讨论】:

以上是关于如何删除以前添加的 sd-bus 匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何一次添加一个类并删除以前添加的类?

ASP.NET 如何在不删除以前数据的情况下向数据库单元添加其他数据

如何使用 sd-bus 获取服务状态?

如何使用 MIME 添加和删除附件

如何通过匹配 ObjectId 字段从嵌套数组中删除对象

如何回滚到以前的迁移并删除架构中的表和列?