14.System V 共享内存区

1、概述

System V共享内存区在概念上类似于Posix共享内存区。代之以调用shmopen后调用mmap的是,先调用shmget,再调用shmat。

对于每个共享内存区,内核维护如下的信息结构,它定义在<sys/shm.h>头文件中:

struct shmid_ds
{
    struct ipc_perm shm_perm;    /* operation permission struct */
    size_t          shm_segsz;   /* segment size */ 
    pid_t           shm_lpid;    /* pid of last operation */
    pid_t           shm_cpid;    /* creator pid */
    shmatt_t        shm_nattch;  /* current attached */
    shmat_t         shm_cnattch; /* in-core # attached  */
    time_t          shm_atime;   /* last attach time */
    time_t          shm_dtime;   /* last detach time */
    time_t          shm_ctime;   /* last change time of this structure */
};

2、shmget 函数

shmget函数创建一个新的共享内存区,或者访问一个已存在的共享内存区。

#include <sys/shm.h>
int shmget(key_t key, size_t size, int oflag);
	// 返回:若成功则为共享内存区对象,若出错则为-1

返回值是一个称为共享内存区标识符(shared memory identifier)的整数,其他三个shmxxX函数就用它来指代这个内存区。

key既可以是ftok的返回值,也可以是I

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值