mmap共享内存问题?

kkk2017 2012-12-10 03:37:13


int fd;
void *buf;
fd=open("/tmp/ggmm",O_RDWR | O_CREAT | O_TRUNC,00777);
buf=mmap(NULL,11,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
close(fd);
memmove(buf,"testmemory",10);
//这里收到了SIGBUS信号,仿佛是mmap返回的地址不能读不能写,大侠们求解。老返回一个0xb7ffd000地址。
printf("%s\n",buf);
munmap(buf,11);
...全文
66 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
pottichu 2012-12-10
  • 打赏
  • 举报
回复
在 fd=open("/tmp/ggmm",O_RDWR | O_CREAT | O_TRUNC,00777); 以后执行 一次写操作:比如: char cbuf[12] = {0 }; write(fd, cbuf, sizeof(cbuf)); buf=mmap(NULL,11,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); 这样就没问题了。 你的程序之所以有问题, 是因为,你 map 的是一个空文件 。 所以 map 会出错。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧