当前位置: 技术问答>linux和unix
linux 内存映射的问题!
来源: 互联网 发布时间:2016-12-31
本文导语: 最近学LINUX,买了本烂书 好多错误啊。。。 麻烦问下 内存映射同步 我明明写了三次HELLO WORLD 为什么没写成功!!!哪儿有问题呢! #include #include #include #include #include #include int main() { int fd; char *buf...
最近学LINUX,买了本烂书 好多错误啊。。。
麻烦问下 内存映射同步 我明明写了三次HELLO WORLD 为什么没写成功!!!哪儿有问题呢!
麻烦问下 内存映射同步 我明明写了三次HELLO WORLD 为什么没写成功!!!哪儿有问题呢!
#include
#include
#include
#include
#include
#include
int main()
{
int fd;
char *buf;
char *p;
int i;
struct stat st_StatBuf;
//得到一个文件的状态信息,得到文件的大小
if (-1 == stat("text.txt",&st_StatBuf))
{
perror("fail to get stat!n");
exit(-1);
}
fd = open("text.txt",O_RDWR); //读写方式打开,不然权限不够
if (-1 == fd)
{
perror("fail to open!n");
exit(-2);
}
//建立一个内存映射,起始地址由系统为用户选择,并作为返回值返回
//建立映射区的大小为打开的文件的大小,测试TEXT。TXT文件为36字节
//访问权限为可写。属性为更新磁盘文件
buf = (char *)mmap(NULL,st_StatBuf.st_size,PROT_WRITE,MAP_SHARED,fd,0);
if (MAP_FAILED == buf)
{
perror("fail to mmap!n");
exit(-3);
}
i = 0;
p = buf;
while (i