主循环是事件驱动编程的核心概念,广泛应用于图形用户界面(GUI)和其他需要持续处理事件的应用中。它的主要作用是不断地检查和处理事件,如用户输入、网络数据、定时器等。
在一个典型的主循环中,应用程序会做以下工作:
- 检查是否有任何事件发生(如鼠标点击、键盘输入)。
- 处理这些事件并执行相应的回调函数。
- 如果没有事件发生,则应用程序通常会等待(通常是阻塞操作),直到有事件需要处理。
在 Linux 环境下,许多 GUI 库如 GTK 和 Qt 都实现了自己的主循环。例如,GTK 使用 GMainLoop 进行事件处理。GLib 提供了对 D-Bus 的支持,将 D-Bus 消息处理集成到 GMainLoop 中。
所以
#include <glib.h> #include <gio/gio.h> int main(int argc, char *argv[]) { GMainLoop *loop = g_main_loop_new(NULL, FALSE); GDBusConnection *connection; GError *error = NULL; connection = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error); if (error != NULL) { g_printerr("Error connecting to D-Bus: %s\n", error->message); g_error_free(error); return 1; } // 设置 D-Bus 信号处理等 g_main_loop_run(loop); // 清理资源 g_main_loop_unref(loop); g_object_unref(connection); return 0; }
标签:glib,NULL,Bus,GMainLoop,---,bluez,error,main,loop From: https://www.cnblogs.com/god-of-death/p/18316827