C libdbus读取数组类型结果
我必须阅读org.freedesktop.NetworkManager.GetDevices 我的程序调用该方法并正确接收结果 问题是如何支持字符串/路径类型的数组? 如何获取数组的长度以及如何获取单个元素,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
谢谢。对于非固定大小元素(如字符串)的数组,我们必须调用
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故意不链接,以避免给他们谷歌果汁。)到目前为止你有什么?