首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux 内存文件映射的有关问题

2013-08-01 
linux 内存文件映射的问题mmap 映射一个文件到内存,我在写满这个内存的时候回写文件,现在想清楚这个文件的

linux 内存文件映射的问题
mmap 映射一个文件到内存,我在写满这个内存的时候回写文件,现在想清楚这个文件的所有内容,应该怎么做?
还有就是创建内存文件映射后,我回写的文件都是文本内容,我回写完毕关闭后,打开这个文件发现如果没写满 这个文件后面会跟上一段\0\0啥的乱起把着的数据,怎么处理?



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函数。
你写入的时候一定要指定好长度,不然的话,一不小心就不\0写进去了。

热点排行