-
2018-2019-1 20165228 《信息安全系统设计基础》第六周学习总结
2018-2019-1 20165228 《信息安全系统设计基础》第五周学习总结
教材学习内容总结
第十章 系统级I/O
- 输入/输出是在主存和外部设备之间复制数据的过程。输入操作是从I/O设备复制数据到主存,输出操作是从主存复制数据到I/O设备。
Unix I/O
- 一个Linux文件就是一个m字节的序列,所有的I/O设备都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。这种将设备优雅地映射为文件的方式,允许Linux文件内核引出一个简单、低级的应用接口,称为Unix I/O。
文件
- 普通文件:包含任意数据,应用程序通常区分文本文件和二进制文件,对内核而言,文本文件和二进制文件无区别。
- 目录:包含一组链接的文件,每个链接都将一个文件名映射到一个文件,这个文件可能是另一个目录。
- 套接字:用来与另一个进程进行跨网络通信的文件
Linux内核将所有文件都组织成一个目录层次结构,由名为/的根目录确定。
打开和关闭文件
- 进程是通过调用open函数来打开一个已存在的文件或者创建一个新文件。
- open函数将filename转换成一个文件描述符,并且返回描述符数字,返回的描述符总是在进程中当前没有打开的最小描述符。flags参数指明了进程打算如何访问这个文件:
O_RDONLY:只读
O_WRONLY:只写
O_RDWR:可读可写
- flags参数也可以是一个或者更多位掩码的或,为写提供一些额外提示。
O_CREAT:不存在则创建它的一个截断的空文件
O_TRUNC:如果存在,则截断
O_APPEND:每次从文件末尾处进行写操作
读/写文件
- 读/写操作分别是调用read/write函数实现的
- read:从描述符为fd的当前文件位置复制最多n个字节到内存位置buf,返回-1表示一个错误,返回0表示EOF,否则表示实际传送的字节数。
- write:从内存为止buf复制最多n个字节到描述符fd的当前位置
RIO包健壮读写
- 自动处理read和write的不足值
- RIO提供两类不同的函数:
无缓冲的输入输出函数:调用rio_readn和rio_writen,应用程序可以在内存和文件之间直接传送数据。
带缓冲的输入函数:调用一个包装函数(rio_readlineb)从一个内部读缓冲区复制一个文本行,当缓冲区变空时,会自动调用read重新填满缓冲区。
读取文件元数据
- 应用程序能够通过调用stat和fstat函数,检索到关于文件的信息,有时也称为文件的元数据。
教材学习中的问题和解决过程
- 问题1:C的标准I/O库与Linux I/O有什么关系
- 解决方法:I/O分类:有两种I/O,一是文件I/O,而c语言的封装叫标准I/O。标准I/O是基于文件I/O的,标准IO调用了文件IO,也优化了文件IO,例如引入缓存机制。所以C标准I/O库函数在头文件stdio.h中声明,而read、 write等函数(文件I/O)在头文件unistd.h中声明 。linux中的C语言头文件存放在/usr/include下,可以打开查看具体定义。
-
相关阅读:
操作系统学习(一)、80x86保护模式内存管理
Linux命令(十三) 建立目录 mkdir 删除目录 rmdir
Linux命令(十二) 分割文件 split 合并文件 join
Linux命令(十一) 显示文件类型 file
linux下环境变量PS1设置
Jenkins email-ext邮件通知模板
building system busy, pls wait !!
SCP 命令
NDK Build 用法(NDK Build)
android下m、mm、mmm编译命令的使用
-
原文地址:https://www.cnblogs.com/cloud795/p/9906347.html
Copyright © 2020-2023
润新知