0
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()是否失敗。 – nos
你的文件「integer」可能不存在;你必須首先創建一個合適的長度,一個零長度的文件不會這樣做......如果你用'O_CREAT'打開它,在mmapping(seek()()之前寫一些(足夠你的數據)也會做)。 – Ctx