linux共享内存初级使用

要在不同的进程之间共享一个数组,怎么办?用文件好慢。

用管道的话,管道会阻塞的。

用共享内存好些。

在UNP2里面其实都给出了使用例子了。只是我没有UNP2罢了……只能看PDF去了。

 

用到的函数有

shmget 申请一个共享内存,得到一个id号,需要提供一个key_t。

shmctl   控制共享内存的行为,获取它的结构啊,或者把它干掉等等。

shmat   把共享内存连接到地址上去,一种映射。

shmdt   木有用到……

 

那么两个进程之间怎么能都知道这个共享内存的入口地址呢,需要我们使用相同的key_t值。是个字符串。

这个key呢 可以用ftok()函数来获得。

ftok需要提供一个文件路径,比如/dev/zero之类的,存在的就好。

相同的字符串导致获得相同的shmid

然后映射就能得到相同的指针来指向这段共享内存了。

 

一个进程写点东西进去,另一个进程就可以读出来。

 

主要使用的是一个指针,理解成数组的地址就可以了,一个ptr什么的。对它的操作一般就是一个memcpy。

 

读写的时候需要我们控制好这个各种大小。写入的量,写出的量,有木有满啊 之类的。

 

目前只是实现了这个多个进程之间的共享数据,能读能写,还没有有效的控制起来。

 

UNP2啊,伤不起啊。淡定的开始编码……TOT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值