📄 map_sigbus.c
字号:
#include <sys/mman.h>#include <sys/types.h>#include <fcntl.h>#include <unistd.h>typedef struct{ char name[4]; int age;}people;int main(int argc,char** argv){ int fd,i; int pagesize,offset; people* p_map; pagesize=sysconf(_SC_PAGESIZE); printf("pagesize is %d\n",pagesize); fd=open(argv[1],O_CREAT|O_RDWR,00777); lseek(fd,pagesize*2-100,SEEK_SET); write(fd,"",1); offset=0; p_map=(people*)mmap(NULL,pagesize*3,PROT_READ|PROT_WRITE,MAP_SHARED,fd,offset); close(fd); for(i=1;i<10;i++) { (*(p_map+pagesize/sizeof(people)*i-2)).age=100; printf("access page %d over\n",i); (*(p_map+pagesize/sizeof(people)*i-1)).age=100; printf("access page %d edge over now begin to access page %d\n",i,i+1); (*(p_map+pagesize/sizeof(people)*i)).age=100; printf("access page %d over\n",i+1); } munmap(p_map,sizeof(people)*10); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -