DBUS-libdbus字符串大小更改

时间:2016-09-09 00:29:55

标签: dbus

我正在使用libdbus-1进行IPC。 我发现当我使用DBUS_TYPE_STRING时会出现意外行为。

发送方: str.size()是20

dbus_message_iter_append_basic(& argsIter,DBUS_TYPE_STRING,& str);

接收方:

dbus_message_iter_get_basic(& argsIter,& str)

str.size()变为449

但是我可以使用[%s]说明符打印字符串的内容,并且在发送方和接收方都是相同的。

如果我将发送者的字符串大小增加到449以上,接收者端的大小就会变成820〜

这是正常行为吗? 我期待发送者和接收者的大小相同。

谢谢你的问候 坦维尔

1 个答案:

答案 0 :(得分:1)

我认为您将错误的类型传递给dbus_message_iter_get_basic。这最终会使应用程序崩溃。

文档有example类似的内容:

DBusBasicValue value;
dbus_message_iter_get_basic(&read_iter, &value);

然后,要从中获取std::string,请使用value.str类型的char*