打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux 文件映射mmap,Bus Error

 当创建一个普通文件,然后映射到虚拟地址空间,出现bus error,代码如下:

代码
1 #define FILE_LENGTH 0x1000 2 int fd = open("test", O_RDWR | O_CREAT); 3 char *fm = (char*)mmap(NULL, FILE_LENGTH, MAP_READ | MAP_WRITE, MS_PRIVATE, fd, 0); 4 if (fm == MAP_FAILED) 5 { 6   prror("mmap\n"); 7   exit(EXIT_FAILAURE); 8 } 9 close(fd);10 strcpy(fm, "this is a test");

 当运行第10行后,系统报错:bus error。因为这时文件还是空的,所以不能写内容,解决办法是在第2行后插入如下代码:

lseek(fd, FILE_LENGTH, SEEK_SET);
write(fd, " ", 1);   //这句一定要,否则文件还是空的,只是位置移到FILE_LENGTH处

这样就搞定了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Bus Error and segment fault
mmap bus error
C语言编程中建立和解除内存映射的方法
mmap通信
Linux 共享内存(POSIX)
uc中怎么建立映射mmap,解除映射munmap,从英文到汉语过程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服