Posix共享内存区
来源:互联网 发布:深圳云知科技 董事长 编辑:程序博客网 时间:2024/05/02 17:29
Posix提供了两种在无亲缘关系进程间共享内存区的方法:
(1)内存映射文件:先有open函数打开,然后调用mmap函数把得到的描述符映射到当前进程地址空间中的一个文件(上一篇笔记所用到的就是)。
(2)共享内存区对象:先有shm_open打开一个Posix IPC名字(也可以是文件系统中的一个路径名),然后调用mmap将返回的描述符映射到当前进程的地址空间。
者两种方法多需要调用mmap,差别在于作为mmap的参数之一的描述符的获取手段。
Posix共享内存区涉及以下两个步骤要求:
(1)指定一个名字参数调用shm_open,以创建一个新的共享内存区对象或打开一个已经存在的共享内存区对象。
(2)调用mmap把这个共享内存区映射到调用进程的地址空间。
注意:mmap用于把一个内存区对象映射到调用进程地址空间的是该对象的一个已经打开描述符。
1、shm_open
#include
int shm_open(const char *name, int oflag, mode_t mode);
1)name 共享内存区的名字
2)oflag 标志位
3)mode 权限位,它指定O_CREAT标志的前提下使用。
2、shm_unlink
int shm_unlink(const char *name);
删除一个共享对象的名字
3、ftruncate
int ftruncate(int fd, off_t length);
将参数fd指定的文件大小改为参数length指定的大小
普通文件或共享内存区对象的大小都可以通过调用ftruncate修改
4、fstat
int fstat(int fd, struct stat *buf);
查看状态
当打开一个已存在的共享内存区对象时,我们可调用fstat来获取有关该对象的信息
对于普通文件stat结构可以获得12个以上的成员信息,然而当fd指代一个共享内存区对象时,只有四个成员含有信息。
struct stat
{
mode_t st_mode;
uid_t st_uid;
gid_t st_gid;
off_t st_size;
};
- Posix共享内存区
- Posix共享内存区
- Posix共享内存区基础知识
- Posix共享内存区的基本操作
- Posix共享内存区(chapter 13)
- 简单的Posix共享内存区程序
- UNPv2第十三章:Posix共享内存区
- Posix多线程-共享内存
- posix 基于共享内存
- posix 共享内存
- POSIX 共享内存
- POSIX共享内存
- 关于Posix共享内存
- 【IPC】Posix共享内存区与mmap内存映射
- IPC通信:Posix共享内存
- Linux 多线程编程( POSIX )( 六 )----->代码区 ( 共享内存实例 )
- Linux 多线程编程( POSIX )( 六 )----->共享内存区
- Linux 多线程编程( POSIX )( 六 )----->共享内存区
- COMSOL5.2 —— 安装+matlab2014b(基于mac os X EI Captian)
- C语言itoa()函数和atoi()
- 信号量
- 蓝桥杯 空瓶换汽水
- Redis 高可用: twemproxy实现缓存服务器分片集群
- Posix共享内存区
- fragment使用方法简析
- Flash和SD控制器(翻译)
- 用VS2015开发Linux程序详细教程-配置篇
- C语言sprintf()函数:将格式化的数据写入字符串
- vmWare 所需要的端口
- System V共享内存
- hadoop namenode 格式化出错
- myeclipse打开时出现"Workspace in use or cannot be created, choose a different one.