На низком уровне: вы можете подключиться к сигналу NameOwnerChanged на демоне D-Bus, который излучается всякий раз, когда имя запрашивается или освобождается на шине.Поэтому, если рабочий процесс принимает известное имя com.example.Foo
, вы можете добавить правило соответствия для sender=org.freedesktop.DBus,path=/org/freedesktop/DBus,interface=org.freedesktop.DBus,member=NameOwnerChanged,type=signal,arg0=com.example.Foo
.(arg0
часть правила совпадения запрещает вам получать уведомления об услугах, отличных от той, которая вам нужна.)
Более высокий уровень: если вы ожидаете результатавызов метода, ваша привязка (такая как QDBus или GDBus) должна вызвать ваш обратный вызов с ошибкой, сообщающей вам, что это то, что произошло.Но вы также можете использовать высокоуровневый API для просмотра NameOwnerChanged
.Для GDBus см. Семейство функций g_bus_watch .