谁将在 dbus 中调用 message_function。

who will call message_function in dbus.

当我们注册DBusObjectPathVTable,那么谁来调用message_function?即 dbus-daemon 会调用还是 dbus 主循环( _dbus_loop_run 函数)会调用?

libdbus 将从 libdbus 主循环中调用 DBusObjectPathVTable 的成员。您可以通过在 libdbus 源代码中搜索成员来自己检查:cd dbus.git && git grep message_function 显示 dbus/dbus-object-tree.c 包含对它的所有调用。 dbus-object-tree.c 是 libdbus 的一部分。

强烈建议您使用 D-Bus 库 other 而不是 libdbus,因为 libdbus 很难正确使用。如果可能,使用 GDBus or QtDBus instead, as they are much higher-level bindings which are easier to use. If you need a lower-level binding, sd-bus 比 libdbus 更现代。