System V共享内存
System V是一种进程间通信的标准,在这种标准之下,本地通信的方式一般由三种,内存共享、消息队列、信号量
这里我们主要介绍共享内存
创建内存共享
这是内存共享的系统调用
第一个参数是共享内存在内核中的标识,类似于文件标识符的地位
第二个参数是创建共享内存的大小
第三个参数有两个选项IPC_CREAT和IPC_EXCL
如果只有第一个,则使用共享内存,不存在则创建后继续使用
第二个不能单独使用,两个相或之后表示创建共享内存后使用,存在则出错返回
第三种方法主要是为了确保所使用的共享一定是新鲜的
创建成功会返回共享内存的标识符,失败返回-1,错误码表示错误原因
共享内存存在内存的共享区中,可以有很多个,是被操作系统描述组织管理的
对于第一个参数,key是需要确定唯一的,类似于手机号,你自己有,别人不能再有一模一样的,并且别人想要打给你也必须输入一模一样的
我们可以使用ftok函数进行生成,只要两个参数相同,则能生成相同的key,类似于哈希函数
需要注意的是,共享内存在进程退