filename:文件名html
flags:指明进程打算如何访问这个文件,node
read函数:从描述符为fd的当前文件位置拷贝最多n个字节到存储器位置buf。 返回值:-1:一个错误;0:EOF;不然,返回值:实际传送的字节数量。git
write函数:从存储器位置buf拷贝至多n个字节到描述符fd的当前文件位置。vim
lseek函数:应用程序可以显式地修改当前文件的位置。缓存
不足值:read和write传送的字节比应用程序要求的少。安全
产生不足值的缘由:
一、读时遇到EOF
二、从终端读文本行
三、读和写网络套接字网络
RIO包的实质:I/O包数据结构
RIO包提供的两种函数:无缓冲的输入输出函数、带缓冲的输入函数(线程安全)app
RIO的带缓冲的输入函数函数
一个文本行就是一个有换行符结尾的ASCII码字符序列。 在Unix系统中,换行符(‘\n’)与ASCII码换行符(LF)相同,数字值为0x0a。
检索文件信息(元数据):应用程序可以经过调用stat和fstat函数
stat函数以一个文件名做为输入,填写一个stat数据结构中的各个成员。
fstat函数以文件描述符而不是文件名做为输入。
st_ size成员包含了文件的字节数大小。
st_ mode成员则编码了文件访问许可位和文件类型。
文件类型包括:
在sys/stat.h中定义:
内核使用三个相关的数据结构来表示打开的文件:
在内核删除相应文件表项以前,父子进程必须都关闭了它们的描述符。
unix> ls > foo.txt
标准I/O库将一个打开的文件模型化为一个流,一个流就是一个指向FILE类型的结构的指针。每一个ANSIC程序开始都有三个打开的流stdin、stdout和stderr,分别对应于标准输入、标准输出、标准错误。
类型为FILE的流是对文件描述符和流缓冲区的抽象。流缓冲区的目的和RIO读缓冲区的同样,就是开销较高的Unix I/O系统调用的数量尽可能能的小。
应用程序能够经过open、close、lseek、read、write和stat这样的函数来访问Unix I/O。
RIO函数:read和write的健壮的包装函数,自动处理不足值,为读文本行提供一种高效的带缓冲的方法。
套接字描述符:Unix对网络的抽象是一种称为套接字的文件类型,被称为套接字描述符。应用进程经过读写套接字描述符来与运行在其余计算机上的进程通讯。
对流I/O限制是:
跟在输出函数以后的输入函数,必须在其中间插入fflush、fseek、fsetpos或者rewind函数,后三个函数使用Unix I/O中的lseek函数来重置当前的文件位置。
跟在输入函数以后的输出函数,必须在中间插入fseek、fsetpos或者rewind的调用,一个输出函数不能跟随在一个输入函数以后,除非该输入函数遇到了一个EOF。
解决对流I/O限制的方法是:
采用在每一个输入操做前刷新缓存区这样的规则来知足。 对同一个打开的套接字描述符打开两个流,一个用来读,一个用来写。
10.1
10.2
10.3
10.4
10.5
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 4000行 | 24篇 | 400小时 | |
第一周 | 150/150 | 1/1 | 15/15 | 对Linux有了初步的认识 |
第二周 | 200/350 | 1/2 | 20/35 | vim的使用 |
第三周 | 250/600 | 1/4 | 20/55 | 各类信息的表示方法 |
第五周 | 250/850 | 1/5 | 25/80 | 汇编与反汇编 |
第六周 | 150/1000 | 1/6 | 25/105 | Y86 |
第七周 | 74/1074 | 1/7 | 25/130 | 各种存储器 |
第八周 | 0/1074 | 2/9 | 20/150 | 错题总结 |
第九周 | 109/1183 | 2/11 | 25/175 | 系统级I/O |