读书人

m地图共享内存有关问题

发布时间: 2013-01-02 13:08:45 作者: rapoo

mmap共享内存问题?


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);
[解决办法]


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 会出错。

读书人网 >UNIXLINUX

热点推荐