当前位置: 技术问答>linux和unix
linux 内存文件映射的问题
来源: 互联网 发布时间:2017-04-18
本文导语: mmap 映射一个文件到内存,我在写满这个内存的时候回写文件,现在想清楚这个文件的所有内容,应该怎么做? 还有就是创建内存文件映射后,我回写的文件都是文本内容,我回写完毕关闭后,打开这个文件发现如...
mmap 映射一个文件到内存,我在写满这个内存的时候回写文件,现在想清楚这个文件的所有内容,应该怎么做?
还有就是创建内存文件映射后,我回写的文件都是文本内容,我回写完毕关闭后,打开这个文件发现如果没写满 这个文件后面会跟上一段啥的乱起把着的数据,怎么处理?
还有就是创建内存文件映射后,我回写的文件都是文本内容,我回写完毕关闭后,打开这个文件发现如果没写满 这个文件后面会跟上一段啥的乱起把着的数据,怎么处理?
if (-1 == (hFile = open(lpszFileName,O_RDWR | O_CREAT,S_IRUSR | S_IWUSR)))
{
return FALSE;
}
int nPageSize = nSize % 4;
nSize -= nPageSize;
if (-1 == lseek(hFile,nSize,SEEK_SET))
{
return FALSE;
}
if (-1 == write(hFile,_T(""),1)) //这里 ,删除后没法使用,没法把内容回写到文件
{
return FALSE;
}
ptszMemAddr = (TCHAR *)mmap(NULL,nSize,PROT_READ | PROT_WRITE,MAP_SHARED,hFile,0);
if (NULL == ptszMemAddr)
{
return FALSE;
}
|
文件你要清空,读写是做不到的,你用truncate函数。
你写入的时候一定要指定好长度,不然的话,一不小心就不写进去了。
你写入的时候一定要指定好长度,不然的话,一不小心就不写进去了。