共享内存
1.所有的函数共用头文件
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
2. 创建共享内存
shmget()函数
int shmget(key_t key, size_t size, int shmflg);
返回值: 成功返回共享内存的ID,出错返回-1
(1)第一个参数key是长整型(唯一非零),系统建立IPC通讯 ( 消息队列、 信号量和 共享内存) 时必须指定一个ID值。通常情况下,该id值通过ftok函数得到,由内核变成标识符,要想让两个进程看到同一个信号集,只需设置key值不变就可以。
(2)第二个参数size指定共享内存的大小,它的值一般为一页大小的整数倍(未到一页,操作系统向上对齐到一页,但是用户实际能使用只有自己所申请的大小)。
(3)第三个参数shmflg是一组标志,创建一个新的共享内存,将shmflg 设置了IPC_CREAT标志后,共享内存存在就打开。而IPC_CREAT | IPC_EXCL则可以创建一个新的,唯一的共享内存,如果共享内存已存在,返回一个错误。一般我们会还或上一个文件权限
3. 操作共享内存
shmctl()函数
int shmctl(int shm_id, int cmd, struct shmid_ds *buf);
返回值: 成功返回0,出错返回-1
(1)第一个参数,shm_id是shmget函数返回的共享内存标识符。
(2)第二个参数,cmd是