C libdbus读取数组类型结果

C libdbus读取数组类型结果,c,dbus,C,Dbus,我必须阅读org.freedesktop.NetworkManager.GetDevices 我的程序调用该方法并正确接收结果 问题是如何支持字符串/路径类型的数组? 如何获取数组的长度以及如何获取单个元素, 谢谢。对于非固定大小元素(如字符串)的数组,我们必须调用dbus\u message\u iter\u recurse(&args,&string),将指向主迭代器的指针作为args,将指向新迭代器的指针作为第二个参数 为了获得元素,我们调用dbus\u message\u iter\u

我必须阅读org.freedesktop.NetworkManager.GetDevices

我的程序调用该方法并正确接收结果

问题是如何支持字符串/路径类型的数组? 如何获取数组的长度以及如何获取单个元素,
谢谢。

对于非固定大小元素(如字符串)的数组,我们必须调用
dbus\u message\u iter\u recurse(&args,&string),将指向主迭代器的指针作为args,将指向新迭代器的指针作为第二个参数

为了获得元素,我们调用
dbus\u message\u iter\u get\u basic(&string,&path)
,其中
路径
是指向字符数组的指针

整个代码如下所示:

if(!dbus\u message\u iter\u init(msg,&args))
fprintf(stderr,“消息没有参数!\n”);
做{
dbus\u消息\u iter\u递归(&args,&string);
做{
dbus\u message\u iter\u get\u basic(&字符串和路径);
放置(路径);
}
while(dbus_message_iter_next(&string));
}while(dbus_message_iter_next(&args));

我很高兴您能够修复代码,但请注意,建议您不要使用libdbus-1连接到D-Bus:它的设计已经过时,正确使用是一件痛苦的事情。然而,它仍然保持着,与libdbus的油嘴滑舌不同

使用更现代的高级API更容易,例如


(libdbus glib和libdbus-1故意不链接,以避免给他们谷歌果汁。)

到目前为止你有什么?