进程通信-共享内存-mmap()-code3
2011-08-30 17:15
405 查看
/*-------------map_normalfile3.c-----------*/ #include <sys/types.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/mman.h> typedef struct { char name[20]; int age; }people; int main(int argc, char** argv) { int fd,i; people *p_map; people *p_map_seg1; people *p_map_seg2; people *p_map_seg3; char temp[20]={0}; fd=open( "map_normalfile.in", O_CREAT|O_RDWR, 00777 ); p_map = (people*)mmap( NULL,sizeof(people)*10*3,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0 ); p_map_seg1 = p_map; p_map_seg2 = p_map+10; p_map_seg3 = p_map+20; close( fd ); printf("p_map=0x%x\n", p_map); //在各个进程中映射同一文件, mmap返回的内存映像地址相同 printf("========Write Seg3===================\n"); for(i=0; i<10; i++) { sprintf(temp, "peple_3%02d", i); memcpy( ( *(p_map_seg3+i) ).name, temp, strlen(temp)+1); ( *(p_map_seg3+i) ).age = 30+i; printf( "name:%s age:%d;\n",(*(p_map_seg3+i)).name, (*(p_map_seg3+i)).age ); sleep(1); } printf(" initialize seg3 over \n "); sleep(10); printf("=========All Data==================\n"); for(i = 0;i<30;i++) { printf( "name=%s age=%d;\n",(*(p_map+i)).name, (*(p_map+i)).age ); } sleep(30); munmap( p_map, sizeof(people)*10*3 ); printf( "umap ok \n" ); return 0; }
相关文章推荐
- 进程通信----共享内存以及mmap函数实现共享内存
- 进程通信-共享内存-mmap()
- 进程通信----共享内存以及mmap函数实现共享内存
- 进程通信-共享内存-mmap()-code1
- 进程通信-共享内存-mmap()-code2
- linux多线程【8】mmap实现父子进程的共享内存通信,用信号量同步
- Linux\Unix IPC进程通信实例分析(一):共享内存通信---文件映射mmap方式
- linux 进程间的通信(五) 共享内存-2
- linux基础编程:进程通信之System V IPC:消息队列,信号量,共享内存
- 使用mmap函数进行内核空间和用户空间的共享内存通信
- Linux下多任务间通信和同步-mmap共享内存
- 动态链接库(DLL) (含进程通信之共享内存)
- linux进程通信-共享内存
- Linux进程通信之POSIX共享内存
- linux进程间的通信(C): 共享内存
- C# .Net 多进程同步 通信 共享内存 内存映射文件
- uc笔记09---进程通信,管道,进程间通信,共享内存,消息队列,信号量,IPC 命令
- linux进程共享内存通信示例
- UNIX系统中的进程通信之共享内存
- linux 进程通信之 共享内存