目录
两种常用的共享内存方式
System 5版本的共享内存 shm
1.多个进程直接共享内存
IPC通信System 5版本的共享内存 shm
原理:利用共享内存完成进程间通信,两个进程都通过虚拟地址空间(可能相同)映射到用户页表,然后通过用户页表映射到内u才能物理的相同一块内存区域
1.ftok生成key描述符
key_t ftok(const char* pathname,int proj_id);
2.创建一个共享内存块,返回共享内存块的标识符shmid
int shmget(key_t key,size_t size,int shmflg)
size: 块的大小,为4k的整数倍
shmflg:IPC_CREAT创建新的共享内存,已存在使用IPC_EXCL
3.挂接共享内存(将进程地址空间挂接到物理空间,可以有多个挂接)
void* shmat(int shmid,const void* shmaddr,int shmflg)
shmid: 挂