2017/07/06

[c/c++]同じidでmsgsnd()してmsgrcv()しても、msgtypeを指定すればOK

以前、こんな記事を書いた。
http://hiro99ma.blogspot.com/2017/06/ccidmsgsndmsgrecv.html

まだこれに悩まされていたので、そろそろidを分けようとしていた。
面倒だが、いちいちsleepを入れないとエラーになるくらいだったら、分けてしまった方が楽だろう。

その前に、メッセージキューのやり方を忘れてしまったので、本を読み返すことにした。
msgrcv()のところを読んでいると、気になる記述に突き当たった。

int msgrcv(msgid, msg_ptr, msg_sz, msgtype, msgflg)

    • 送信された順序でメッセージを受信したい場合には、msgtypeに0を設定する
    • 特定のメッセージ型のメッセージだけを受信したい場合には、等しい値をmsgtypeに設定する

あの引数って、そんな意味があったの??


念のためJMのほうも見てみたが、上記を理解していれば、そのように書いてあるのがわかった。
Man page of MSGOP


びっくりしたような、自分にがっかりしたような、そんな気分だが、無駄な実装をせずに済んだことを喜ぼう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。