我在使用 Glib 时遇到问题。我想订阅 dbus 信号而不用 g_main_loop_run 启动主循环。
我创建到正确总线的连接并调用函数g_dbus_connection_signal_subscribe。
我用while(1) 替换了 main 函数中对g_main_loop_run的调用。
不幸的是,它不起作用。如果我正确理解 GLib,则无需启动 mainloop 进行此类处理。
请帮忙。
示例代码:
session_bus = g_bus_get_sync(G_BUS_TYPE_SESSION,
NULL,
NULL );
g_dbus_connection_signal_subscribe(session_bus,
"org.freedesktop.Notifications",
"org.freedesktop.Notifications",
"NotificationClosed",
"/org/freedesktop/Notifications",
NULL,
G_DBUS_SIGNAL_FLAGS_NONE,
(GDBusSignalCallback) onNotifClosed,
NULL,
NULL );
loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(loop);
g_main_loop_unref(loop);
g_object_unref(session_bus);