按照《UNIX网络编程卷2:进程间通信》一书中5.2.1节的方式创建消息队列时总是遇到”Permission Denied”错误,究其原因,在 Linux下需要先挂载消息队列专用的虚拟文件系统 (man 7 mq_overview):

# mkdir /dev/mqueue
# mount -t mqueue none /dev/mqueue

这样就将消息队列所需的文件系统挂载在了/dev/mqueue目录下,后续使用mq_open创建的消息队列将对应/dev/mqueue目录下的一个文件。 如mq_open("/mymq", flags, mode, NULL)将在/dev/mqueue/目录下创建一个文件名为”mymq”。注意,一个消息队列的名字应该是 “/mq_name”的形式,即必须以’/’开头,后接消息队列名字。