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

王朝system·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

功能描述:

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

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:需要建立消息队列,但已达到系统的限制

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航