Dbus——故障控制

标签 dbus

有没有一种方法可以通知通过 Dbus 连接的进程另一个进程死了?我的意思是有故障的进程可以通知另一个进程他有一个异常终止。我知道您可以检查错误类型返回,但我想要其他东西。例如考虑我们有一个进程在等待答案,但我们用 CTRL+C 杀死了另一个进程。有没有办法通知其他进程..或者你应该等待几秒钟的响应...等等

最佳答案

在低级别:您可以连接到 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. (match rulearg0 部分可防止您收到有关您关心的服务以外的服务的通知。)

更高级别:如果您正在等待方法调用的结果,您的绑定(bind)(例如 QDBus 或 GDBus)应该调用您的回调并告诉您发生了什么错误。但您也可以使用更高级别的 API 来观看 NameOwnerChanged。对于 GDBus,请参阅 g_bus_watch函数族。

关于Dbus——故障控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3850296/

相关文章:

c++ - 如何将复杂数据打包到 QtDBus 回复中?

python - 关于检测usb设备的问题

c - 如何安全地使用 g_variant_iter_loop 处理通过 DBUS 接收的数据

python - Dbus/GLib 主循环,后台线程

使用dbus头文件编译C程序

c++ - DBUS 代码在放置在守护程序进程中时会崩溃,但在没有守护程序代码的独立 main() 函数中运行良好

bash - Cron Jobs 可以使用 Gnome-Open 吗?

linux - C 中的 D-Bus 教程与 wpa_supplicant 通信

c - 如何使用 org.bluez.AudioSource GetProperty

c - org.bluez.GattCharacteristic1 WriteValue 方法