加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux System V 消息队列的内核结构和msgget、msgctl 函数

发布时间:2016-09-27 10:12:28 所属栏目:Linux 来源:站长网
导读:一、消息队列 1、消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法 2、每个数据块都被认 为是有一个类型,接收者进程接收的数据块可以有不同的类

四、消息队列在内核中的表示

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

创建流程如下图所示:

linux System V 消息队列的内核结构和msgget、msgctl 函数

注意,IPC_PRIVATE 不是一个msgflg 而是一个key_t 类型,如果指定key = IPC_PRIVATE,则无论某个 key_value 这个 消息队列是否存在,都会再创建一个key_value 消息队列,但他们的标识码msqid是不一样的,且指定IPC_PRIVATE 产生的 是私有的消息队列。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读