msgget-获取系统V消息队列标识符(获取消息队列的id)
头文件
#include <sys / types.h>
#include <sys / ipc.h>
#include <sys / msg.h>
函数
int msgget(key_t key ,int msgflg );创建或打开消息队列
key:是个键值, 多个进程可通key值来访问同一个消息队列.函数的返回值id 与key 有关.
key值通过fork函数获取;
msgflag: 权限标志位.
如果创建了新的消息队列,则其关联的数据结构
msqid_ds(请参阅msgctl(2))初始化如下:
· msg_perm.cuid和msg_perm.uid设置为的有效用户ID调用过程。
· msg_perm.cgid和msg_perm.gid设置为的有效组ID调用过程。
· msg_perm.mode的最低有效9位设置为最低msgflg的有效9位。
· msg_qnum,msg_lspid,msg_lrpid,msg_stime和msg_rtime设置为 0。
· msg_ctime设置为当前时间。
· msg_qbytes设置为系统限制MSGMNB。
如果消息队列已经存在,则验证权限,并且进行检查以查看其是否标记为销毁。
返回值
如果成功,则返回值将是消息队列标识符
(一个非负整数),否则为-1,其中errno表示
错误。