当前位置: 技术问答>linux和unix
用mmap的一个小程序,core dump了,大家帮我看看!
来源: 互联网 发布时间:2016-10-16
本文导语: #include #include #include #include #include int main(void){ int s=sizeof(int); int fd=open("my.data",O_RDWR|O_CREAT); void *pa=mmap(0,s,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); if(NULL==pa){ printf("mmap failedn"); return 1; } ((char*)pa)[0]='a'; m...
#include
#include
#include
#include
#include
int main(void){
int s=sizeof(int);
int fd=open("my.data",O_RDWR|O_CREAT);
void *pa=mmap(0,s,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
if(NULL==pa){
printf("mmap failedn");
return 1;
}
((char*)pa)[0]='a';
munmap(0,s);
close(fd);
return 0;
}
问题到底在哪里?
|
你的my.data文件本来不存在吧
这样你创建的文件大小为0,相当于没有映射内存
这样你创建的文件大小为0,相当于没有映射内存
|
mmap有点像是分配了一块内存,文件多大这块内存就是多大,写到这块内存以外就是越界了,不会使文件变大。
楼主可以试试用vi给my.data里面写几个字符,然后给pa[0]到pa[100]全都写上'a',结果文件的几个字节全都会变成a,但是并不会变大
楼主可以试试用vi给my.data里面写几个字符,然后给pa[0]到pa[100]全都写上'a',结果文件的几个字节全都会变成a,但是并不会变大