共享内存,允许两个不相关的进程访问同一个逻辑内存,不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,而后该进程都可以访问共享内存中的地址。
共享内存是两个运行的进程之间数据交换最有效的方法。但共享内存本身没有同步机制,访问其中数据需要配合异步机制。
几个进程将自己的虚拟地址映射到同一物理地址上面,访问这段虚拟地址,都将会访问同一物理地址。
int shmget(key_t key, size_t size, int shmflg);
用于创建共享内存,key是全局的表示符,用一个整数表示共享内存,不同进程间,相同key的共享内存相同。成功时返回一个新建或已经存在的的共享内存标识符。
void *shmat(int shmid, const void *shmaddr, int shmflg);
挂接共享内存。