linux System V 消息队列的内核结构和msgget、msgctl 函数
四、消息队列在内核中的表示 消息队列是用链表实现的,这里需要提出的是MSGMAX指的是一条消息的纯数据大小的上限,上图是一个消息队列,则其 纯数据总和不能超过MSGMNB,像这样一条消息队列,系统含有的总数不能超过MSGMNI 个。 五、msgget 和 msgctl 函数 #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> (1)int msgget(key_t key, int msgflg); 功能:用来创建和访问一个消息队列 参数 key: 某个消息队列的名字 msgflg:由九个权限标志构成,它们的用法和创建文件时使用的mode模式标志是一样的 返回值:成功返回一个非负整 数,即该消息队列的标识码;失败返回-1 创建流程如下图所示: 注意,IPC_PRIVATE 不是一个msgflg 而是一个key_t 类型,如果指定key = IPC_PRIVATE,则无论某个 key_value 这个 消息队列是否存在,都会再创建一个key_value 消息队列,但他们的标识码msqid是不一样的,且指定IPC_PRIVATE 产生的 是私有的消息队列。 (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |