共享内存
原理:通信进程创建一块共享内存,然后找出一块本地内存和共享内建立映射关系,之后往本地内存中存放数据(实际也将数据写入到了共享内存中),被通信方进程找到共享内存,并和其建立映射关系,之后从本地内存取数据,就是从共享内存中取数据。
实现两个进程通信:
A:1 ftok()--》创建一个对方进程找到自己的标识符
key_ftok(const char*pathname, int proj_id);
作用:创建一个标识符
*pathname:指向文件名或带路径的文件名
proj_id:0~255
返回值:成功 是一个整形的标识符
失败: -1
int shmget(key_t key, size_t size, int shmfig);
作用:创建一个片共享内存
key:ftok的返回值
size:共享内存大小
shmflg:共享内存属性&八进制的权限位
返回值:成功 表示共享内存的标识符
失败 -1
void *shmat(int shmid, const void *shmaddr, int shmflg);
调用自定义函数/库函数---用户空间
调用系统调用函数---用户空间----》内核空间---》用户空间