问题:linux中使用mq_open(3)时,已经按照man 7 mq_overview提示挂载/dev/mqueue,但还是permission denied。
解决: 可能是你的mq名字设置不对。linux接受的mq名字只能开头带一个斜杠。
mqd_t mqd = mq_open("/tmp/mqd", O_RDONLY | O_CREAT, S_IRUSR| S_IWUSR , NULL); //Permission denied
mqd_t mqd = mq_open("/mqd", O_RDONLY | O_CREAT, NULL); //Invalid argument
mqd_t mqd = mq_open("/mqd", O_RDONLY | O_CREAT, S_IRUSR| S_IWUSR , NULL); //正确
而且需要注意的是,如果是需要创建的mqd不存在,那么,必须加上权限设置比如S_IRUSR这些。否则Invalid argument