共享内存实现实现分为两个步骤:
一:创建共享内存,使用shmget函数
二:映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数
创建:
int shmget(key_t key,int size,int shmflg)
key标识共享内存的键值:0/IPC_PRIVATE。当key的取值为IPC_PRIVATE,则函数shmget()将创建一个新的共享内存;如果key的取值为0,而参数shmflg中又设置IPC_PRIVATE这个标志,则同样会创建一块新的共享内存。
返回值:如果成功则返回内存标识符,如果失败则返回-1;
映射:
int shmat(int shmid, char *shmaddr,int flag)
参数:
shmid:shmget函数返回的共享内存存储标识符
flag:决定以后用什么方式来确定映射地址(通常为0)
返回值:
如果成功,则返回共享内存到进程中的地址;如果失败,则返回-1
一个进程不再需要共享内存时,需要把它从进程地址空间中脱离。
脱离函数:
int shmdt(char *shmaddr)