- 締切済み
linux_ メッセージキューの使用方法
よろしくお願いします。 メッセージキューの使用方法に関して、とても頭を痛めております。 使用しているOSはLINUX DEBIAN4.0 コンパイラはGCCです。 簡単に申し上げますと、メッセージキューで送信する構造体の構造体の構造体のメンバの値が取得できず、取得しても0になってしまうところです。 ちなみに構造体の形は typedef struct { long mtype; <- 1を代入 uint16 command; <- 選別子として仕様 uint16 length; <- 問題としていない uint16 number; <- 問題としていない T_BUFF buff; <----------- ここが問題 } aaa; このT_BUFFの構造体の中身は typedef union _T_EngBuf { uint8 buff[32]; uint8 bbb[256]; uint8 ccc[256]; T_DDD ddd; T_EEE eee; T_FFF fff; T_GGG ggg; T_HHH hhh; T_JJJ jjj[**]; } T_BUFF; この中の各構造体のメンバの値が取得できないのです。 しかしながら、buf[32]やbbb[256]といった配列に関してはちゃんと取得できます。 ちなみに送受信のサイズ、キューID、sndとrcvとgetの文法はあっていると思います。 共有体をもちいてはメッセージの送受信はできないのでしょうか? もし可能だとしたら、共有体での送受信の方法を教えてください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6290)
> この中の各構造体のメンバの値が取得できないのです。 構造体や共用体の定義だけでなく、「メンバの値が取得できない」 ところのコード「も」見せてください。
補足
失礼しました。量が膨大になってしまうのでT_DDDの部分だけ typedef struct { bool baaa; <--ブーリアン bool bbbb; uint16 ccc; uint16 ddd; uint16 eee; } T_DDD; ちなみに今は方法を変え構造体にmemcpyをしています。しかし結果は同じで配列は取得できるもののメンバは取得できないとなっています。 よろしくお願いします。