gpt4 book ai didi

c - 如何使用 gio/glib 在 C 中列出 dbus 服务下的所有对象路径?

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:28 25 4
gpt4 key购买 nike

对此 question 的跟进但我想用 C,而不是 python,用 glib-2.0/gio-2.0 来做。我真的很难在 C 中找到这样的例子,而且文档对于新手来说很难阅读,因为它只是一个巨大的 api 列表。

最佳答案

对于客户端 DBus 调用,您可以使用 GDbusProxy 中的对象。在原始问题中使用 org.freedesktop.DBus.Introspectable:

int
main (int argc, char *argv[])
{
GError *error;
GDBusProxyFlags flags;
GDBusProxy *proxy;
gpointer data;

loop = g_main_loop_new (NULL, FALSE);

error = NULL;
proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM
flags,
NULL, /* GDBusInterfaceInfo */
name, /* your service name */
object_path, /* your root object */
"org.freedesktop.DBus.Introspectable",
NULL, /* GCancellable */
&error);
g_dbus_proxy_call(proxy,
"Introspect", NULL,
G_DBUS_CALL_FLAGS_NONE,
-1, NULL,
(GAsyncReadyCallback) some_callback,
&data);

然后您可以定义函数 some_callback 来处理包含对象的 xml。

关于c - 如何使用 gio/glib 在 C 中列出 dbus 服务下的所有对象路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38920190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com