首页 运维 网络学院 查看内容

LINUX学习笔记——进程间通信3共享内存

2012-3-23 11:02 895 0

摘要: a)         意义:多个进程共享一部分物理内存。访问快,方便 b)   ...
关键词: nbsp 内存 地址 include shmaddr int 进程 标志 shmflg key

a)         意义:多个进程共享一部分物理内存。访问快,方便 b)         先创建共享内存:int shmget(key_t key, int size, int shmflg) 1.         Key:标志共享内存的键值;0/IPC_PRIVATE a)         Key=0:本不创建,但若shmflg仍为IPC_PRIVATE则仍创建 2.         Size:大小 3.         Shmflg:标志 一般S_IRUSR|S_IWUSR 4.         返回值:成功返回共享内存标志符;失败返回-1; 5.         #include<sys/ipc.h>,#include<sys/shm.h>,#include<sys/types.h>,#include<sys/stat.h> c)         再映射共享内存: 1.         Int shmat(int shmid, char *shmaddr, int flag) a)         Shmid:shmget函数返回的共享存储标识符 b)         Shmaddr:是用来保存映射地址,若是0:表述系统自动找地址,通过返回值来得到 c)         Flag:决定以什么方式来确定映射的地址(通常是0) d)         返回值:shmaddr=0时,成功返回共享内存映射到进程中的地址;失败返回-1 2.         共享内存映射到不同进程,地址不同 d)         清除内容:得到地址后需要先把这个内存区重置数据 1.         memset(p_addr,’\0’,1024):1024个字节全部重置为 a)         #include<string.h> e)         拷贝内容:strncpy(p_addr, argv[1],1024) f)          解除映射:int shmdt(char *shmaddr)
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部