1.共享内存映射
shmat函数将一个共享内存段映射到调用进程的数据段中。简单来理解,让进程和共享内存建立一种联系,让进程某个指针指向此共享内存。
#include <sys/types.h>
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
参数:
返回值: - 成功:共享内存段映射地址( 相当于这个指针就指向此共享内存 ) - 失败:-1
shmat函数使用时第二和第三个参数通常指定为NULL和0,即系统自动指定共享内存地址并且共享内存可读可写。
2.解除共享内存映射
shmdt函数将共享内存和当前进程分离( 仅仅是断开联系并不删除共享内存,相当于让之前的指向此共享内存的指针,不再指向)。
#include <sys/types.h>
#include <sys/shm.h>
int shmdt(const void *shmaddr);
参数: - shmaddr:共享内存映射地址。
返回值: - 成功:0 - 失败:-1