Linux相关好文章记录(已看)

1.文件fd

存储基础 — 文件描述符 fd 究竟是什么?

文件描述符对应的底层是文件,打开文件需要在进程中打开,所以进程结构体也就是PCB(task_struct)里面有一个管理这个进程打开的文件描述符的结构体指针, struct files_struct     *files;

接下来看files_struct这个结构体,里面有两个表,一个静态数组,可存放64个文件描述符,也就是最大打开64个文件。还有一个动态数组,如果打开文件描述符超过64个,则用动态数组。

打开文件返回的fd就是数组的索引,数组存放的元素是指针,指向最终文件的结构体files;

files里面有path,inode等字段,对应的就是最终的文件。

思考:同一个files结构体可以被多个进程的数组指针指向,也就是可以被多个进程打开,这种情况一般出现在父子进程fork时。同一个进程时多个fd可以指向同一个文件,也就是用dup或者dup2函数实现。

语法:C如何实现多态,比如把a结构体转为b结构体,做法:b结构体含有一个a结构体,获取a的地址,减去地址偏移量得到b的地址。

2.epoll 

https://mp.weixin.qq.com/s?__biz=Mzg3NTU3OTgxOA%3D%3D&chksm=cf3df280f84a7b96a6247a59218bc30ac2487d14905924a2e64568bfe21762157595316b909c&idx=1&mid=2247492165&scene=21&sn=b7556601db1d4118ea9188945cb891aa#wechat_redirect

epoll高效的关键:内部使用红黑树,增删改查效率再logn ;使用就绪列表,只返回就绪的文件描述符。

哪些文件描述符能用epoll:socket,eventfd,timerfd ;(ext4的文件系统那些不行,因为一直可读可写,监听没意义)

Linux fd 系列 — eventfd 是什么?_煎鱼(EDDYCJY)的博客-CSDN博客  讲eventfd的博客

1.eventfd实现了read/write接口,本质是一个计数器

2.实现了poll和epoll接口,因为轻量,只是一个计数器.所以用于事件的通知管理

3.eventfd监听可读事件才有意义,因为eventfd是一直可写的

4.主要用于结合业务,作为事件的通知机制

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值