2017-02-21 3 views
1

Я создал sd_bus, а затем зарегистрировался для сигналов, указав совпадение, используя sd_bus_add_match() и получив сигналы от sd-bus. Теперь я хочу знать, как остановить получение событий для конкретного соответствия, не вызывая sd_bus_close().как удалить ранее добавленное соответствие sd-bus

ответ

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().

Смежные вопросы