博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unix环境高级编程-高级IO(2)
阅读量:6186 次
发布时间:2019-06-21

本文共 633 字,大约阅读时间需要 2 分钟。

函数readv和writev:这两个函数用于在一次函数调用中读、写多个非连续缓冲区。有时也将这两个函数成散布读(scatter read)和聚集写(gather write)

函数readn和writen:

管道、FIFO以及某些设备(终端和网络)有以下性质:

1.一次read操作所返回的数据可能少于所要求的数据,即使还没达到文件尾端也可能是这样。

2.一次write操作的返回值也可能少于指定输出的字节数。这可能是由某个因素造成的,比如内核输出缓冲区变满,这也不是错误,应该继续写余下数据。

通常在读写一个管道、网络设备或终端时,需要考虑这些特性,readn和writen函数功能分别是读写指定的n字节数据,并处理返回值可能小于要求值的情况。

存储映射IO:

存储映射IO能够将一个磁盘文件映射到存储空间的一个缓冲区上,当从缓冲区取数据时,就相当于读文件中的相应字节,同理,将数据存入缓冲区时,相应字节自动写入文件,这样就可以在不使用read和write情况下执行IO。

为了实现这种功能,应首先告诉内核将一个给定的文件映射到一个存储区域中,这是有mmap函数实现的。

addr参数用于指定映射存储区的起始地址,通常将其设置为0,表示由系统选择该映射区的起始地址。

fd参数是指定要被映射文件的描述符。

prot参数制定了映射存储区的保护要求,如下图所示

转载于:https://www.cnblogs.com/sichenzhao/p/9320355.html

你可能感兴趣的文章
ipod无法使用无线网络问题分析
查看>>
Vert.x 提供web API 译<八>
查看>>
gcc 降低版本
查看>>
YII Framework学习教程-YII的Modules(模块化)
查看>>
iOS: 在iPhone和Apple Watch之间共享数据 App Groups
查看>>
Zabbix应用之Server/Agent部署
查看>>
添加PaloAlto 8.0到EVE-NG
查看>>
开源大数据处理工具汇总(上)
查看>>
lduan server 2012 IIS 远程管理(二十六)
查看>>
kube-shell安装与使用
查看>>
Python基础学习(三)
查看>>
centos7 下yum安装mysql8.0.15
查看>>
关于AsyncTask异步执行任务Demo
查看>>
2015年8月30日课程作业(练习)
查看>>
callable() 函数
查看>>
有4个线程A、B、C、D,分别打印1、2、3、4,请同时启动他们,但是要求按照1234的顺序输出结果...
查看>>
liunx 中普通用户关机的方法
查看>>
LNMP架构应用实战——Nginx配置虚拟主机
查看>>
linux和unix常用快捷键
查看>>
IT职场人生系列之九:消费观(攒钱,继续教育,买房)
查看>>