实用技巧:Linux系统调用Msgget函数详解



    功能描述:

    获取和某个键关联消息队列标识消息队列被建立情况有两种:

    1.如果键值是IPC_PRIVATE.

    2.或者键值不是IPC_PRIVATE并且键所对应消息队列不存在同时标志中指定IPC_CREAT.

    如果新消息队列被建立它关联msqid_ds数据结构化如下:

    msg_perm.cuid 和 msg_perm.uid设为有效用户标志;

    msg_perm.cgid 和 msg_perm.gid设为有效用户组标志;

    msg_perm.mode最低9个位设为msgflg最低9个位;

    msg_qnummsg_lspidmsg_lrpidmsg_stime和msg_rtime设为0;

    msg_ctime设为当前时间;

    msg_qs设为系统限制MSGMNB.

    使用方法:

    #

    #

    #

    msgget(key_t key msgflg);

    参数:

    key:消息队列关联

    msgflg:消息队列建立标志和存取权限

    返回介绍说明:

    成功执行时返回消息队列标识值失败返回-1errno被设为以下某个值

    EACCES:指定消息队列已存在进程没有权限访问它而且不拥有CAP_IPC_OWNER权能

    EEXIST:key指定消息队列已存在而msgflg中同时指定IPC_CREAT和IPC_EXCL标志

    ENOENT:key指定消息队列不存在同时msgflg中不指定IPC_CREAT标志

    ENOMEM:需要建立消息队列但内存不足

    ENOSPC:需要建立消息队列但已达到系统限制

Tags: 

延伸阅读

最新评论

发表评论