# fsys.mmap 库模块帮助文档

## fsys 成员列表 <a id="fsys" href="#fsys">&#x23;</a>

### fsys.mmap <a id="fsys.mmap" href="#fsys.mmap">&#x23;</a>
用于创建内存映射,主要用于进程间共享内存,  
例如process.command就使用了fsys.mmap在进程间共享数据

创建或打开内存映射文件,  
返回对象可传入其他线程使用。

### fsys.mmap() <a id="fsys.mmap" href="#fsys.mmap">&#x23;</a>
[返回对象:fsysMmapObject](#fsysMmapObject)

### fsys.mmap(内存映射文件句柄) <a id="fsys.mmap" href="#fsys.mmap">&#x23;</a>
使用句柄直接打开内存映射文件

### fsys.mmap(内存映射文件句柄,true) <a id="fsys.mmap" href="#fsys.mmap">&#x23;</a>
使用句柄直接打开内存映射文件  
添加析构函数负责释放句柄

### fsys.mmap(文件路径,共享名,文件大小,文件大小高32位,访问属性,内存保护属性) <a id="fsys.mmap" href="#fsys.mmap">&#x23;</a>
创建内存映射文件,所有参数可选,  
参数@1可为空，可指定文件路径,也可直指定fsys.file对象,  

省略共享名创建匿名对象,  
共享名可用于跨进程共享内存映射文件，  
共享名不能包含反斜杠,不能超过260个字符  
thread.event,process.mutex,fsys.mmap等共享名字不能相同,  

如果不指定文件，或打开空文件,则大小默认设为64MB，  
文件大小高32位如果省略，可选使用math.size64对象指定文件大小

## fsysMmapObject 成员列表 <a id="fsysMmapObject" href="#fsysMmapObject">&#x23;</a>

### fsysMmapObject.close() <a id="fsysMmapObject.close" href="#fsysMmapObject.close">&#x23;</a>
关闭文件映射对象

### fsysMmapObject.conflict <a id="fsysMmapObject.conflict" href="#fsysMmapObject.conflict">&#x23;</a>
如果打开已存在的内存映射,该属性为真

### fsysMmapObject.getOffset() <a id="fsysMmapObject.getOffset" href="#fsysMmapObject.getOffset">&#x23;</a>
返回当前位置,math.size64对象,  

[返回对象:mathSize64Object](https://www.aardio.com/zh-cn/docs/library-reference/math/_.html#mathSize64Object)

### fsysMmapObject.getOffset32() <a id="fsysMmapObject.getOffset32" href="#fsysMmapObject.getOffset32">&#x23;</a>
返回当前位置  
返回两个值,分别为低32位,高32位

### fsysMmapObject.mapView(内存大小) <a id="fsysMmapObject.mapView" href="#fsysMmapObject.mapView">&#x23;</a>
映射内存并返回指针

### fsysMmapObject.read() <a id="fsysMmapObject.read" href="#fsysMmapObject.read">&#x23;</a>
自当前位置读取数据,  
读取成功向后移动指针指向已读取数据尾部  
参数可以为读取长度,也可以是结构体

### fsysMmapObject.readTable() <a id="fsysMmapObject.readTable" href="#fsysMmapObject.readTable">&#x23;</a>
读入table对象  
成功返回table,失败返回null值以及读入的文本

### fsysMmapObject.seek("cur",偏移量,偏移量高位) <a id="fsysMmapObject.seek" href="#fsysMmapObject.seek">&#x23;</a>
移动文件指针,  
参数一为"cur"表示相对当前位置  
参数三为可选参数

### fsysMmapObject.seek("set",偏移量,偏移量高位) <a id="fsysMmapObject.seek" href="#fsysMmapObject.seek">&#x23;</a>
移动文件指针,  
参数一为"set"表示相对开始位置  
参数三为可选参数,参数二默认为0

### fsysMmapObject.unmapView(内存指针) <a id="fsysMmapObject.unmapView" href="#fsysMmapObject.unmapView">&#x23;</a>
取消映射,  
参数必须是mapView函数返回的指针地址

### fsysMmapObject.write <a id="fsysMmapObject.write" href="#fsysMmapObject.write">&#x23;</a>
写入数据  
多进程读写应使用 process.mutex 创建互斥锁

### fsysMmapObject.write(写入数据) <a id="fsysMmapObject.write" href="#fsysMmapObject.write">&#x23;</a>
写入数据\参数可以是结构体或字符串、buffer、或数值  
该函数不支持多个参数,读取成功返回true,以及长度,  
失败返回false,以及错误信息

### fsysMmapObject.write(写入数据,写入长度) <a id="fsysMmapObject.write" href="#fsysMmapObject.write">&#x23;</a>
写入数据\参数可以是字符串、buffer、指针  
字符串、buffer 可选指定写入长度  
指针必须指定长度

### fsysMmapObject.writeTable <a id="fsysMmapObject.writeTable" href="#fsysMmapObject.writeTable">&#x23;</a>
写入table对象  
多进程读写应使用 process.mutex 创建互斥锁

### fsysMmapObject.writeTable(table对象) <a id="fsysMmapObject.writeTable" href="#fsysMmapObject.writeTable">&#x23;</a>
写入table对象,仅支持可序列化为字面量的对象  
多进程读写应使用 process.mutex 创建互斥锁
