【发布时间】:2017-10-11 08:45:28
【问题描述】:
int main() {
int fd; // File Descriptor for the integer file
int pagesize=getpagesize(); // To store the size of virtual page
printf("\nPage size is %d bytes.\n100 integers require %lu bytes\n",pagesize,100*sizeof(int));
void *data; // This is the pointer which will store the returned pointer when mmap() is called
fd=open("integer", O_RDWR);
data=mmap((caddr_t)0, pagesize, PROT_WRITE | PROT_READ, MAP_SHARED, fd,0);
close(fd);
sprintf((char*)data,"%d",100);
return 0;
}
这会返回分段错误 11
【问题讨论】:
-
你可以检查 mmap() 是否失败。如果确实如此,请致电
perror()或以其他方式检查errno以了解失败的原因。您还需要检查 open() 是否失败。 -
您的文件“整数”可能不存在;你必须先用适当的长度创建它,一个零长度的文件不会做......如果你用
O_CREAT打开它,在映射之前写一些(足够你的数据)字节到它(seek()ing也可以)。
标签: c segmentation-fault