Изменения размера строки DBUS-libdbus

Я использую 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~

Это нормальное поведение? Я ожидал, что размер будет одинаковым у отправителя и получателя.

спасибо с уважением tanweer

1 ответ

Я думаю, что вы передаете неправильный тип dbus_message_iter_get_basic, Это в конечном итоге приведет к сбою приложения.

Документы имеют пример с чем-то вроде этого:

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

Затем, чтобы получить std::string из него используйте value.str который имеет тип char*,

Другие вопросы по тегам