• 締切済み

プロセス間でのメッセージキュー送信

Linux初心者です。 あるプロセスが生成したメッセージキューへ、別のプロセスからメッセージキュー送信する場合、キューIDを指定する必要があります。 しかし、Linuxでは仮想メモリを使用しているため、共有メモリにアクセスできないはずで、異なるプロセス間でキューIDを共有する方法がわかりません。。 メッセージキューについて以下のサイトでサンプルプログラムが紹介されていますが、2つのプロセスが親子関係であるため、キューIDを共有できています。 http://linuxmag.sourceforge.jp/Japanese/March2003/article287.shtml そもそも、親子関係がないとプロセス間通信ができないのでしょうか? ご存知の方、よろしくお願いします。

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

> メッセージキューIDはキュー生成時にシステムが自動で割り当てる(=msgget()の戻り値)ために、設計者が自由に決めることができない認識ですが 正確でない表現をしてしまいました。 正しくは「作成者と利用者が同じkeyでmsgget()し、返ってきたIDを利用する」です。 keyとキューは1:1の対応(IPC_PRIVATE除く)なので、同じkeyを使えば同じキューが参照できます。

kurombo
質問者

お礼

理解できました。 同一のIPCキー(key_t)からは、同一のIPC識別子が得られるのですね。 ありがとうございました。 助かりました。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

・ID固定でメッセージキューを作成する ・作成者がファイルにIDを書き込み、利用者がファイルからIDを読み取る ・CORBAなどのRPCを使ってIDをやりとりする ざっと思いつくのはこれくらいですね。

kurombo
質問者

補足

ご回答ありがとうございます。 >・ID固定でメッセージキューを作成する についてですが、メッセージキューIDはキュー生成時にシステムが自動で割り当てる(=msgget()の戻り値)ために、設計者が自由に決めることができない認識ですが誤りでしょうか? すいませんがよろしくお願いします。

関連するQ&A