30 消息队列

原理

操作系统可以通过页表映射在共享区创建一块共享内存,也可以申请一个队列。A进程和B进程可以向这个队列发送数据块,两个进程接收数据块来通信

函数

申请数据块

参数中的key来自于ftok函数

删除消息队列

同样消息队列也有数据结构管理,可以获取

消息队列也是通过key来区分

发送消息和消息结构

接收消息

查看消息队列命令

ipcs -q

删除消息队列

ipcrm -q smsqid

IPC内核数据结构设计

system v的每个通信方式都有一个ipc_perm的结构,里面储存了共享资源的信息,包括key值。内核里ipc是一个模块,有一个ids结构体内的指针指向了ipc_id的数组,这个里面有一个类型为指针的柔性数组,定义了一个kern_ipc_perm结构,里面就是内核管理ipc资源的属性,数组里保存的都是每一个ipc结构的指针,当需要具体的某一类资源,如共享内存,返回给用户层shmid,就是数组下标,线性递增的,从0开始,当到达最大值又会回归0继续增加。用户通过shmid告诉系统哪个资源,系统通过key标识唯一来遍历数组。找到后通过强转为共享内存类型的perm返回。多态的形式

相关推荐
6***v4172 分钟前
启动nginx报错nginx [emerg] bind() to 0.0.0.080 failed (98 Address already in use)
运维·nginx
代码栈上的思考2 分钟前
Linux 核心基础实操(含远程登录、编辑器、用户管理等)
linux·运维·服务器
礼拜天没时间.4 分钟前
《Grafana 企业级可视化监控实战指南:从安装、配置到智能告警》:Grafana 使用
linux·运维·信息可视化·zabbix·grafana·监控
代码游侠6 分钟前
数据结构——单向链表
linux·开发语言·数据结构·学习·算法·链表
工具人55559 分钟前
如何确认当前登录的系统是QNX还是Linux
linux·运维·服务器
python百炼成钢10 分钟前
46.Linux SPI 驱动
linux·运维·服务器
傲世(C/C++,Linux)11 分钟前
Linux系统编程——UDP广播
linux·单片机·udp
深圳市恒讯科技11 分钟前
如果超出防护峰值,会发生什么——服务器会挂掉吗?
运维·服务器
努力也学不会java12 分钟前
【docker】Docker Register(镜像仓库)
运维·人工智能·机器学习·docker·容器
9527华安12 分钟前
紫光同创FPGA实现 TCP/IP 协议栈,千兆网服务器版本,提供5套工程源码和技术支持
服务器·tcp/ip·fpga开发