当前位置:网站首页>unix环境编程 第十五章 15.9 共享存储
unix环境编程 第十五章 15.9 共享存储
2022-08-09 10:26:00 【玛丽苏打肉饼】
共享存储允许两个或者多个进程共享一个 给定的存储区。因为数据不需要在客户进程和服务器进程之间复制。所以这是最快的一种IPC。使用共享存储时要掌握的唯一窍门是在多个进程之间同步访问一个给定的存储区。
调用的第一个函数通常是shmget,它获得一个共享存储标识符
#include <sys/shm.h>
int shmget(key_t key,size_t size,int flag);
//成功返回共享存储ID,失败返回-1
参数size是该共享存储段的长度,以字节为单位。
shmctl函数对共享存储段执行多种操作
#include <sys/shm.h>
int shmctl(int shmid,int cmd,struct shmid_ds *buf);
//成功返回0,失败返回-1
一旦创建了一个共享存储段,进程就可调用shmat将其连接到它的地址空间中。
#include <sys/shm.h>
void *shmat(int shmid,cosnt void *addr,int flag);
//成功返回指向共享存储段的指针,出错返回-1
如果addr为0,则此段连接到由内核选择的第一个可用地址上。这是推荐的使用方式
如果addr非0,并且没有指定SHM_RND,则此段连接到addr所指定的地址上。
如果addr非0,并且指定了SHM_RND,则此段连接到所表示的地址上。
当对共享存储段的操作已经结束的时候,则调用shmdt与该段分离。注意,这并不是从系统中删除其标识符以及其相关的数据结构。
#include <sys/shm.h>
int shmdt(const void *addr);
//成功返回0,出错返回-1
边栏推荐
猜你喜欢
随机推荐
1: bubble sort
工作--今天的学习
Win32控件------------显示系统使用的控件版本
京东物流与五菱将开发联名版定制产品
Browser error classification
虚拟列表key复用问题
Electron application development best practices
LM小型可编程控制器软件(基于CoDeSys)笔记二十六:plc的数据存储区(模拟量输入通道部分)
KMP& sunday
Redis 缓存主动更新策略
[相机配置] 海康相机丢包配置环境
stimulus.js 初体验
Restful WebServices 学习笔记
函数二
OneNote 教程,如何在 OneNote 中搜索和查找笔记?
【八大排序①】插入排序(直接插入排序、希尔排序)
1005 继续(3n+1)猜想 (25 分)
字符串函数和内存函数
一天半的结果——xmms on E2
Win系统 - 罗技 G604 鼠标蓝灯闪烁、失灵解决方案