io接口(io接口是什么意思)

对文件的操作,除了最基本的打开、关闭、读、写、定位之外,还有很多特殊的情况,比如用于沟通应用层与底层驱动之间的ioctl、万能工具箱fcntl、内存映射mmap等等,熟练使用这些API,是日常开发的必备技能。

系统IO常用的API接口,你认识多少个?会用多少个?新手一定要看


一、ioctl()

该函数是沟通应用层和驱动层的有力武器,底层开发人员在为硬件设备编写驱动的时候,常常将某些操作封装为一个函数,并为这些接口提供一个所谓的命令字,应用层开发者可以通过 ioctl() 函数配合命令字,非常迅捷地绕过操作系统中间层层机构直达驱动层,调用对应的功能。

从这个意义上讲,函数 ioctl() 像是一个通道,只提供函数调用路径,具体的功能由所谓命令字决定,下面是函数的接口规范说明:


系统IO常用的API接口,你认识多少个?会用多少个?新手一定要看

二、fcntl()

该函数的名字是 file control 的缩写,顾名思义,它可以用来“控制”文件,与 ioctl 类似,此处的 “控制” 含义广泛,具体内容由其第二个参数命令字来决定,fcntl 接口规范如下:


系统IO常用的API接口,你认识多少个?会用多少个?新手一定要看

  • 关键点:
    • fcntl 是个变参函数,前两个参数是固定的,后续的参数个数和类型取决于 cmd 的具体数值。
    • 第二个参数 cmd,称为命令字。
    • 命令字有很多,常用的如下:


系统IO常用的API接口,你认识多少个?会用多少个?新手一定要看

从上表可以看出:

  1. F_DUPFD的功能与dup( )/dup2( )类似。
  2. 通过F_SETSL/F_GETFL来获取和设置文件status,经常拿来设置文件的阻塞特性
  3. 通过F_SETOWN/F_GETOWN来获取和设置套接字触发的信号的属主,网络编程中常见。
系统IO常用的API接口,你认识多少个?会用多少个?新手一定要看


三、mmap()

该函数全称是 memory map,意为内存映射,即将某个文件与某块内存关联起来,达到通过操作这块内存来间接操作其所对应的文件的效果。

系统IO常用的API接口,你认识多少个?会用多少个?新手一定要看

注意:映射完之后一定要记得取消映射

如何释放内存空间(映射区域):


系统IO常用的API接口,你认识多少个?会用多少个?新手一定要看

这几个IO常用的API接口在实际开发中用得非常频繁,开发人员一定要掌握!


度白嵌入,持续分享嵌入式知识,感兴趣可关注,也欢迎大牛来提建议~

io接口(io接口是什么意思)文档下载: PDF DOC TXT
文章来源: 丽丽
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2384272385@qq.com举报,一经查实,本站将立刻删除。