教材知识总结:
- 输入操作是从I/O设备复制数据到主存,而输出操作是从主存复制数据到I/O设备
- Unix I/O使得所有的输入和输出都能以一种统一且一致的方式来进行
- 普通文件包含任意数据。应用程序一般要区分文本文件和二进制文件。文本文件是只含有ASCII或Unicode字符的普通文件。
- 绝对路径名和相对路径名的概念。
- 普通文件中文本文件每一行都是一个字符序列,以 结束,新行符与ASCII的换行符一样,数字值为0x0a
- 目录:每个目录至少含有两个条目,.是到该目录自身的连接,..是到父目录的链接。
- 套接字:用来与另一个进程进行跨网络通信的文件
- open函数将filename转换为一个文件描述符。int open(char *filename,int flag,mode_t mode);其中flag参数有:O_RDONLY,O_WRONLY,O_RDWR,O_CREAT,O_TRUNC,O_APPEND。
- 关闭一个已关闭的描述符会出错。write函数从内存位置buf复制之多n个字节到描述符fd的当前文件位置。
- size_t是无符号类型的,ssize_t是有符号类型的。
- RIO提供了两类不同的函数:无缓冲的输入输出函数,带缓冲的输入函数。
- rio_readn函数从描述符fd的当前文件位置最多传送n个字节到内存位置,no_writen函数是反过来的。rio_readlineb函数从文件rp独处下一个文本行,包括换行符号。
- 应用程序能够通过调用stat和fstat函数来检索文件的信息。其中两个比较重要的是st_size成员包含了文件的字节数大小。st_mode编码了文件访问许可位。
- Linux系统提供了相对比较丰富的帮助手册(man),man是manual的缩写,在日常linux系统管理中经常用到
- 在Ubuntu下可通过
man deluser
查看相关帮助文档 man -k
:根据关键字搜索联机帮助,是一种模糊搜索man -f
:关键字精确搜索,与-k不同,它只搜索与关键字完全匹配的帮助页man -a
:搜索并打开所有man中同名帮助man -aw
:显示所有手册文件的路径- 应用程序可以用readdir系列函数来读取目录的内容。
- 内核通过三个相关的数据结构来表示打开的文件:描述符表、文件表、v-node表。所有进程共享这张v-node表。
- Linux shell提供了I/O重定向操作符,允许用户将磁盘文件和输入输出联系起来,键入foo.txt,可以直接标准输出重定向到磁盘文件foo.txt。
- int dup2(int oldfd,int newfd);这个函数可以把文件描述符从前面的老的复制到后面的新的,使这两个文件描述符同时指向一个地方。
-a
:不要忽略二进制的数据-A<显示列数>
:除了显示符合范本样式的那一列之外,并显示该列之后的内容-b
:在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号-B<显示列数>
:除了显示符合范本样式的那一列之外,并显示该列之前的内容-c
:计算符合范本样式的列数。-V
:显示版本信息-q
:不显示任何信息