一、引导
1、 共享内存也是属于IPC对象,所以使用之前必须申请key值。
2、 共享内存作用范围以及机制是如何?
作用范围:在linux下任意两个进程。
机制:任意两个进程通过申请key值,ID号,共享内存得到一片内存空间,那么这两个进程就可以将数据写入到共享内存/读取共享内存上的数据进行数据的交换。
二、实现共享内存步骤:
1)先申请key值。
key_t key = ftok(".", 10);//点是当前路径
2)根据申请到的key值去申请共享内存的ID号。
int shmget(key_t key, size_t size, int shmflg);
参数:
key: key值
size:共享内存的总字节数,必须是PAGE_SIZE的倍数 #define PAGE_SIZE 1024
shmlg: IPC_CREAT //不存在就创建
IPC_CREAT|0666
返回值:
成功:共享内存ID号
失败:-1
3)根据ID号 将共享内存映射至本进程虚拟内存空间的某个区域
void *shmat(int shmid, cons