キュー作成のために拒否されたC許可
-
26-09-2019 - |
質問
私はキューを作成しようとしているが、私は許可拒否エラーを取得しています。私は前にこのエラーを得たが、その後、私はエラーが鍵の作成にキャッチし、それが働いていたためにコードを追加しました。私はそれ以来、変更しただけの事は、私は別の関数に私のキュー作成コードを入れています。
:好きな私のコードのようになります。ここの何かkey_t key1;
int msqid1;
int main(int arc, char *argv[])
{
getKeys();
queueCreate();
}
void getKeys()
{
if ((key1 = ftok(".", '1')) == -1)
{
perror("key1 creation");
exit(1);
}
}
void queueCreate()
{
if ((msqid1 = msgget(key1, 0666 | IPC_CREAT)) == -1)
{
perror("msqid1 creation");
exit(1);
}
}
スローエラーが「msqid1作成:アクセス許可が拒否されました」です。任意のアイデア?
解決
ほとんどは、おそらくあなたはそれがまだ存在しているので、あなたはそれを再作成することはできませんので、今、それが正常に作成された1時にメッセージキューを破棄しませんでした。
あなたは、あなたがしているどのプラットフォーム示すものではありません。古典的には、あなたはもはや求められていIPCシステムを除去するために、種々のIPCシステム(共有メモリ、セマフォ、メッセージキュー)、およびipcs
のステータスを取得するためにipcrm
コマンドを使用すると思います。
他のヒント
あなたのエラーはEACCES
なくEEXIST
のようです。私のLinuxのmanページは述べています:
EACCES Aメッセージキューは、キーのために存在するが、呼び出し元プロセスはありません キューにアクセスする権限を持っていない、と持っていません CAP_IPC_OWNERケーパビリティます。
あなたはこれらの条件をチェックしましたか?
あなたはftok
のためのパスとしてカレントディレクトリを使用しています。多分「を/ tmp」ではなく、あなたのホームフォルダにプレーンローカルファイルへの変更(NFS?)ます。
所属していません StackOverflow