Изменения размера строки 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*
,