【发布时间】:2016-05-07 17:27:28
【问题描述】:
我在尝试使用 mq_open() 调用创建 posix mq 时遇到权限问题。我确实合并了此处提到的更改mq_open Permission denied 我查看了其他相关帖子,例如https://groups.google.com/forum/#!topic/comp.unix.programmer/hnTZf6aPpbE,但这也指向同一件事。
gcc server_mq.c -lrt -o 服务器
错误编号为 13
天哪,mqd 出了点问题! 权限被拒绝
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <mqueue.h>
#include <errno.h>
#include <string.h>
#include "client_server.h"
#define PATH "/tmp/servermq"
int main(void)
{
mqd_t mqd;
mode_t omask;
omask = umask(0);
int flags = O_RDWR | O_CREAT | O_EXCL;
struct mq_attr attr, *attrp;
attr.mq_maxmsg = 5;
attr.mq_msgsize = 1024;
attrp = &attr;
mqd = mq_open(PATH, flags, S_IRUSR | S_IWUSR | S_IWGRP, attrp);
if (mqd == (mqd_t)-1)
{
printf("error number is %d \n ",errno);
printf(" Oh dear, something went wrong with mqd ! %s\n", strerror(errno));
}
umask(omask);
mq_close(mqd);
mq_unlink(PATH);
return 0;
}
【问题讨论】:
标签: c linux posix message-queue