shmat 函数的使用

shmat 函数的使用
 
   shmat()是用来允许本进程访问一块共享内存的函数,与shmget()函数共同使用。
   shmat的原型是:void *shmat(int shmid,const void *shmaddr,int shmflg);
   它需要如下3个参数:
   第一个是参数是 shmid 是shmget 返回的标识符,
   第二个参数 三种情况   1.如果shmaddr 是NULL,系统将自动选择一个合适的地址!   2.如果
shmaddr 不是NULL 并且没有指定SHM_RND则此段连接到addr所指定的地址上。  3.如果shmaddr
非0 并且指定了SHM_RND 则此段连接到shmaddr -(shmaddr mod SHMLAB)所表示的地址上。这里
解释一下SHM_RND命令,它的意思是取整,而SHMLAB的意思是低边界地址的倍数,它总是2的乘方,该
算式是将地址向下取最近一个SHMLAB的倍数。 除非只计划在一种硬件上运行应用程序(在现在是不太可
能的),否则不用指定共享段所连接到的地址。所以一般指定shmaddr为0,以便由内核选择地址。
  
   第三个参数如果在flag中指定了SHM_RDONLY位,则以只读方式连接此段,否则以读写的方式连接此
段。 shmat返回值是该段所连接的实际地址,如果出错返回 -1。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值