Posix共享内存区

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;

};

转载于:https://www.cnblogs.com/luiz/p/6828811.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab求半衰期,如何使用GLD和GDX价差来估计均值回归的半衰期

计算均值回归时间序列的半衰期我们可以通过例中GLD和GDX的均值回归差价来计算均值回归半衰期。MATLAB代码可以从epchan. com/book/example? _ 5. m获得。(这个程序的第一部分与example7 2. m.相同。)%在此播入example7_2. m%Insert example7 2. m in the beginning hereprevzb…

java占位符

String str"我是{0},我来自{1},今年{2}岁,{3}";String[] arr{"中国人","北京","22","谢谢"};Matcher mPattern.compile("\\{(\\d)\\}").matcher(str);while(m.find()){strstr.replace(m.group(),arr[Integer.pars…

oracle单表存储记录,oracle从各个表获得数据保存到另一个表

oracle从各个表取得数据保存到另一个表从各个表中取得数据保存另一个表中:CREATE VIEWPARAMETER_view ASWITHtall AS(SELECTp.PI_NO,--产品序列号p.SERIALNO,--产品编号p.PI_NAME,--产品名称p. PI_START_DATE,--产品起息日p.PI_END_DATE,--产品期日期p.PI_CUSTOMER_…

框架错误汇总

1.struts标签&#xff0c;在body中输入代码发现值栈不存在&#xff0c; 即<s:debug></s:debug>没有起作用 1 <body>2 3 4 测试url标签<br>5 <s:url value"index.jsp" var"surl"></s:url><br>6 <s:url value&…

初次进入oracle数据库,Oracle数据库的初次使用

oracle数据库的初次使用&#xff1a;oracle自带了用户 system /system管理员用户 scott/tiger用户初次使用&#xff1a;创建表空间(此处为使用默认的用户scott/tiger)在控制台&#xff1a;1.使用system/system用户登录语句&#xff1a;sqlplus system/system2.赋予用户权限&…

oracle+循环插入sql,SQL server,Oracle循环插入百万数据

SQL server&#xff0c;Oracle循环插入百万数据SQL server&#xff0c;Oracle循环插入百万数据压测时常需要往数据库插入大量数据&#xff0c;下面是我往两个数据库插入数据时用的脚本declare maxSum int,lid nvarchar(64), -- lid为表idcid int,userid nvarchar(64),oper_time…

jquery 通过submit()方法 提交表单示例

jquery 通过submit()方法 提交表单示例&#xff1a; 本示例&#xff1a;以用户注册作为例子。使用jquery中的submit()方法实现表单提交。 注&#xff1a;本示例仅提供了对表单的验证&#xff0c;本例只用选用了三个字段作为测试。 用户点击提交按钮时&#xff0c;触发点击事件&…

php background-image,css background-image属性怎么用

css background-image属性为元素设置背景图像&#xff0c;语法为&#xff1a;background-image:url(图片路径)。设置的背景图像会占据元素的全部尺寸&#xff0c;包括内边距和边框&#xff0c;但不包括外边距。css background-image属性怎么用&#xff1f;作用&#xff1a;为元…

webstorm

问题描述&#xff1a;webstorm打开文件夹&#xff0c;文件夹内的文件不能全部显示&#xff0c;如图 原因&#xff1a;配置文件xml出错 解决方法&#xff1a;删除文件夹内的idea文件&#xff0c;再用webstrom重新打开就行╮(╯▽╰)╭转载于:https://www.cnblogs.com/chenluomen…

mac 下开发golang 配置

1、安装golang 见附件 2、默认安装在 /usr/local/go 目录下 3、配置环境变量&#xff1a; 编辑文件&#xff1a;vim /etc/profile&#xff0c;有的MAC 下没有这个文件&#xff0c;可以新建。 加入环境变量配置&#xff1a; export GOROOT/usr/local/go export GOPATH/Users/sh…

linux文件句柄数满,linux文件句柄数超出系统限制怎么办?

1、问题阐述&#xff1a;too many open files&#xff1a;顾名思义即打开过多文件数。不过这里的files不单是文件的意思&#xff0c;也包括打开的通讯链接(比如socket)&#xff0c;正在监听的端口等等&#xff0c;所以有时候也可以叫做句柄(handle)&#xff0c;这个错误通常也可…

linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题

linux系统升级后&#xff0c;手动编译的kernel无法启动问题linux系统升级后&#xff0c;手动编译的kernel无法启动问题做开发相关&#xff0c;需要编译3.18的kernel&#xff0c;x86_64的&#xff0c;但是我的deepin升级v20之后&#xff0c;编译的kernel就无法启动了&#xff0c…

linux大内存拷贝优化,Linux 下基础设施及系统网络优化

基础设施优化CPU 优化多级缓存充分利用 cache 是 CPU 调优的重要手段&#xff0c;由于是底层优化作用范围广。性能分析利器——Perf 参数学习提升 cache 命中率缓存命中&#xff1a; CPU 要取的数据再一级缓存内&#xff0c;直接读取&#xff0c;称为 cache 命中率使用 Perf 查…

Vue或React多页应用脚手架

https://github.com/zhujiasheng/vue-multipage https://github.com/MeCKodo/vue-multipage 转载于:https://www.cnblogs.com/zhujiasheng/p/6112335.html

磁盘管理来安装linux,Linux_在CentOS系统中安装quota来管理磁盘配额,在网络管理的工作中,由于硬 - phpStudy...

在CentOS系统中安装quota来管理磁盘配额在网络管理的工作中&#xff0c;由于硬盘的资源是有限的&#xff0c;常常需要为多用户的服务器设定用户的linux磁盘配额。这个功能对公用的多用户服务器(免费的或者收费的)来说&#xff0c;更是非常必要的。Quota就是在RedHatlinux下实现…

arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)

前言 关于本篇功能实现用到的 api 涉及类看不懂的&#xff0c;请参照 esri 官网的 arcgis api 3.x for js&#xff1a;esri 官网 api&#xff0c;里面详细的介绍 arcgis api 3.x 各个类的介绍&#xff0c;还有就是在线例子&#xff1a;esri 官网在线例子&#xff0c;这个也是学…

linux中进程pts 1和pts 3,termial创建时ptmx与pts的关系

我们打开一个terminal,那么将会在devpts文件系统/dev/pts下创建一个对应的pts字符文件,该pts字符文件节点直接由/dev/ptmx节点的驱动函数ptmx_open()调用devpts_pty_new(tty->link)[tty对应ptmx,tty->link对应/dev/pts/xxx,那么tty->link->link又对应回ptmx同样ptm…

linux系统无root权限lua库安装,liunx系统中安装lua以及torch

一直在用pytorch&#xff0c;最近在做项目的时候&#xff0c;遇到了torch的开源代码&#xff0c;所以又开始不得不接触torch以及他所依赖的环境lua。 liunx下lua环境的配置代码如下: curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz tar zxf lua-5.3.5.tar.gz cd lua-5.3…

js数组去重的四种方式

// 删除重复的 function only(arr){for(var i0;i<arr.length;i){for(var j i1;j<arr.length;j){if(arr[i]arr[j]){arr.splice(j,1);j--;}}}return arr; } console.log(only([6]));//[6] console.log(only([1,9,8,8,0,6,0,6]));//[1, 9, 8, 0, 6]// 往新数组中插入不重复…

linux的usermod命令参数,linux usermod命令参数及用法详解

linuxusermod命令参数及用法详解,linux修改用户账号信息命令,usermod可用来修改用户帐号的各项设定。接下来是小编为大家收集的linux usermod命令参数及用法详解&#xff0c;欢迎大家阅读&#xff1a;linux usermod命令参数及用法详解命令&#xff1a;usermod功能说明&#xff…