異なるプロセスですでに開かれているキューのオープンができません
現在、Linux(Suse10.3)の環境でPOSIXのメッセージキューを用いたプロセス間通信のプログラムを作成しています。
mq_openでメッセージキューをオープンしているのですが、
異なるプロセスですでに開かれているキューのオープンができません。
最初にオープンしたキューは受信専用、異なるプロセスでオープンするキューは送信専用です。
errnoを調べましたが、 EACCES("\nキューは存在するが、呼び出し元が指定されたモードでそのキ>ューをオープンする許可を持たない。")となっています。
プロセスAの第3引数についてはmode_t S_IRWXU=0x777;としていますが、この辺りの設定方法がよくわかりません。
例)
<プロセスA(プロセスBより先に実行)>
msqid = mq_open(
"/sample001", O_RDONLY | O_CREAT, S_IRWXU, &mqattr);
cout << "msqid:" << msqid << enld;
msqid:3
<プロセスB>
mqd = mq_open("/sample001", O_WRONLY);
cout << "msqid:" << msqid << enld;
msqid:-1
/////////////////////////////////////////////////////////////
//errnoは下記の通りです。
/////////////////////////////////////////////////////////////
EACCES(キューは存在するが、呼び出し元が指定されたモードでそのキ>ューをオープ>ンする許可を持たない。)
何か心当たりはありませんでしょうか?
お礼
ありがとうございます。 紹介してもらったサイトを見たけど、すごく難しくて 分かりませんでした。 でも、とても詳しく説明されているみたいだったから いつか役に立つ情報だと思いました。