有两个进程, A 和 B 用nmap实现共享, 但是结果和想象的不一样
=================================================
A 进程代码
int fd;
char *prt;
char *msg="My name is Foo!";
fd=open("sharefile",O_RDWR|O_CREAT,00777);
write(fd,msg,strlen(msg)+1);
prt=(char*) mmap(NULL,strlen(msg)+1,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
close(fd);
memcpy(prt,msg,strlen(msg)+1);
printf("%s\n",prt);
sleep(10); /*等待b去修改共享内存内容。*/
printf("%s",prt);
munmap(prt,strlen(msg)+1);
=====================================================
// B 进程代码
int fd;
char *prt;
char *msg="My name is Bar!";
fd=open("sharefile",O_RDWR,00777);
prt=(char*) mmap(NULL,strlen(msg)+1,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
close(fd);
memcpy(prt,msg,strlen(msg)+1);
munmap(prt,strlen(msg));
=============================================
在一个控制台开启进程A 在另一个控制台开启B
A显示结果如下, 和想象的不一样
My name is Foo!
My name is Foo!
进程B 的运行对A没有起作用,
请分析原因,谢谢!