1. 共享内存
1) 概念:是被多个进程共享的一段物理内存,是共享数据最快的方法
2) 实现的步骤:
(一) 创建共享内存,使用shmget函数
int shmget ( key_tkey, int size, int shmflg );
返回值:如果成功,返回共享内存段标识符。
如果失败,则返回- 1:
errno = EINVAL (无效的内存段大小)
EEXIST (内存段已经存在,无法创建)
EIDRM (内存段已经被删除)
ENOENT (内存段不存在)
EACCES (权限不够)
ENOMEM (没有足够的内存来创建内存段)
(二) 映射共享内存,使用shmat函数
原型:int shmat ( int shmid, char *shmaddr, int shmflg);
返回值:如果成功,则返回共享内存段连接到进程中的地址。
如果失败,则返回- 1:
errno = EINVAL (无效的IPC ID 值或者无效的地址)
ENOMEM (没有足够的内存)
EACCES (存取权限不够)
(三) 删除共享内存,使用shmdt函数
系统调用:shmdt();
调用原型:int shmdt( char *shmaddr );
返回值:如果失败,则返回- 1:
errno= EINVAL (无效的连接地址)