2010-10-03 73 views
2

是否有方法告知通過Dbus連接的過程:另一個過程死了?我的意思是錯誤的過程可以告訴另一個過程他有異常終止。我知道你可以檢查錯誤類型返回,但我想要別的東西。例如,考慮我們有一個等待答案的過程,但我們用CTRL + C來殺死另一個過程。有沒有辦法通知其他進程..或者你應該等待幾秒鐘的響應......等Dbus - 故障控制

回答

4

在低級別:你可以連接到D-Bus守護進程,NameOwnerChanged信號無論何時在公共汽車上聲明或公佈名稱。因此,如果工作進程採用知名名稱com.example.Foo,則可以爲sender=org.freedesktop.DBus,path=/org/freedesktop/DBus,interface=org.freedesktop.DBus,member=NameOwnerChanged,type=signal,arg0=com.example.Foo添加匹配規則。 (match rulearg0部分阻止您通知除您所關心的服務以外的其他服務。)

更高級別:如果您正在等待方法調用的結果,那麼您的綁定(例如QDBus或GDBus )應該打電話給你的回調,並告訴你這是發生了什麼。但是您也可以使用更高級的API來觀看NameOwnerChanged。對於GDBus,請參閱g_bus_watch功能系列。