科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道实用技巧:Linux系统调用Msgget函数详解

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

消息队列被建立的情况有两种:如果键的值是IPC_PRIVATE。或者键的值不是IPC_PRIVATE,并且键所对应的消息队列不存在,同时标志中指定IPC_CREAT。

作者:korn 来源:赛迪网 2008年6月16日

关键字: Linux 命令行 技巧

  • 评论
  • 分享微博
  • 分享邮件

功能描述:

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

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_qnum,msg_lspid,msg_lrpid,msg_stime和msg_rtime设为0;
msg_ctime设为当前时间;
msg_qbytes设为系统限制MSGMNB。

用法:

#include
#include
#include
int msgget(key_t key, int msgflg);

参数:

key:消息队列关联的键。
msgflg:消息队列的建立标志和存取权限。
返回说明:
成功执行时,返回消息队列标识值。失败返回-1,errno被设为以下的某个值
EACCES:指定的消息队列已存在,但调用进程没有权限访问它,而且不拥有CAP_IPC_OWNER权能
EEXIST:key指定的消息队列已存在,而msgflg中同时指定IPC_CREAT和IPC_EXCL标志
ENOENT:key指定的消息队列不存在同时msgflg中不指定IPC_CREAT标志
ENOMEM:需要建立消息队列,但内存不足
ENOSPC:需要建立消息队列,但已达到系统的限制

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章