2016-09-09 9 views
0

私はlibdbus-1をIPCに使用しています。 DBUS_TYPE_STRINGを使用すると予期しない動作が発生することがあります。送信側DBUS-libdbus文字列サイズの変更

: str.size()は20

dbus_message_iter_append_basic(& argsIter、DBUS_TYPE_STRING、& STR)です。

受信側:

dbus_message_iter_get_basic(& argsIter、& STR)

str.size()は、Iは[%S]指定子と、それに印刷することができ、文字列の449

がコンテンツなります送信者と受信者で同じです。

私は以上の449受信側のサイズが820〜

arounなりように、送信側で文字列のサイズを大きくした場合、それは正常な動作ですか? 送信者と受信者のサイズが同じであると予想していました。

感謝のnについて tanweer

答えて

1

私はあなたがdbus_message_iter_get_basicに間違った種類を渡していると思います。それは最終的にアプリケーションをクラッシュさせます。タイプchar*であるvalue.strを使用し、それからstd::stringを取得するには、次に

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

ドキュメントはそのようなものでexampleを持っています。

+0

ありがとうございます!できます –

関連する問題