dポイントプレゼントキャンペーン実施中!

Linux初心者です。

あるプロセスが生成したメッセージキューへ、別のプロセスからメッセージキュー送信する場合、キューIDを指定する必要があります。
しかし、Linuxでは仮想メモリを使用しているため、共有メモリにアクセスできないはずで、異なるプロセス間でキューIDを共有する方法がわかりません。。

メッセージキューについて以下のサイトでサンプルプログラムが紹介されていますが、2つのプロセスが親子関係であるため、キューIDを共有できています。
http://linuxmag.sourceforge.jp/Japanese/March200 …

そもそも、親子関係がないとプロセス間通信ができないのでしょうか?

ご存知の方、よろしくお願いします。

A 回答 (2件)

> メッセージキューIDはキュー生成時にシステムが自動で割り当てる(=msgget()の戻り値)ために、設計者が自由に決めることができない認識ですが



正確でない表現をしてしまいました。
正しくは「作成者と利用者が同じkeyでmsgget()し、返ってきたIDを利用する」です。
keyとキューは1:1の対応(IPC_PRIVATE除く)なので、同じkeyを使えば同じキューが参照できます。
    • good
    • 0
この回答へのお礼

理解できました。
同一のIPCキー(key_t)からは、同一のIPC識別子が得られるのですね。

ありがとうございました。
助かりました。

お礼日時:2009/02/06 14:41

・ID固定でメッセージキューを作成する


・作成者がファイルにIDを書き込み、利用者がファイルからIDを読み取る
・CORBAなどのRPCを使ってIDをやりとりする

ざっと思いつくのはこれくらいですね。

この回答への補足

ご回答ありがとうございます。

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

すいませんがよろしくお願いします。

補足日時:2009/02/06 11:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!