#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

int msgget(key_t key, int msgflg); //创建消息队列

参数:
    key:消息队列关联的键。为IPC_PRIVATE时表示创建自己的消息队列
    msgflg:消息队列的建立标志和访问权限。msgflg 的低位用来确定消息队列的访问权限。
        IPC_CREAT:如果 key不存在,创建
        IPC_EXCL:如果 key 存在,返回失败
        IPC_NOWAIT:如果需要等待,直接返回错误
        如果单独使用IPC_CREAT,则msgget()要么返回一个新创建的消息队列的标识符,要么返回具有相同关键字值的队列的标识符。如果 IPC_EXCL和IPC_CREAT一起使用,则msgget()要么创建一个新的消息队列,要么如果队列已经存在则返回一个失败值-1。
    
返回说明:
如果成功,返回消息队列标识符
如果失败,则返回-1:errno=EACCESS(权限不允许)
EEXIST(队列已经存在,无法创建)
EIDRM(队列标志为删除)
ENOENT(队列不存在)
ENOMEM(创建队列时内存不够)
ENOSPC(超出最大队列限制) 
 
举例:
msgid=msgget(IPC_PRIVATE,IPC_CREAT|IPC_EXCL|00666); //创建消息队列
 
posted on 2013-01-15 13:29  冈萨雷斯  阅读(433)  评论(0编辑  收藏  举报