关于inotify监控mmap内存映射或共享内存相关变动的做法

这几天要做事件触发的数据更新操作,但是数据是在共享内存中的(可能是mmap创建的,也可能是Posix 的shm_open等得到的,还可能是System V中的共享内存)。监听风云 | inotify 实现原理 - 掘金

因为inotify实际上监控的inode相关的系统调用,如果使用共享内存或者内存映射时使用的指针对数据区进行操作,那么并不会触发IN_MODIFIED事件。如果想用共享内存或者内存映射,则需要进行变通。同样的,对于/proc/下的文件的监控,inotify也是无能为力的,因为这些是伪文件系统,是内核提供给用户的一种交互接口。

这里给出一个无赖的使用方法,对于能拿到fd的共享内存或者内存映射,在把数据区的内容都使用指针进行处理完后(比如使用memcpy,或者赋值语句后),使用write(fd,char,pos)这样的操作修改一个共享内存或者内存映射中的某个字节,这样就算使用了系统调用,inotify就能监控到该事件啦。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值