目录
一:回顾文件
二:加深对文件的理解
1.概念
2.以w写方式打开
3.以a追加方式打开
4.重定向
一:回顾文件
以前学习过在C语言中的文件操作, 但那根本是不足以理解文件的,即站在语言角度是不可能理解文件的
我们要进行文件操作时,前提是我们的程序跑起来了
文件打开和关闭,是CPU在执行我们的代码
二:加深对文件的理解
1.概念
打开文件,本质上就是进程打开文件!!!
即struct task_struct 和struct XXX(文件结构)之间一定存在着两种对象之间的指针关系
文件没有被打开的时候,那它存在哪里呢?? ---> 在磁盘上存在
一个进程是可以打开多个文件的,而系统内部也可以存在很多进程 ---> 因此在很多情况下,操作系统内部一定存在大量的被打开的文件
所有在OS需要将这些被打开的文件进程管理起来 ---> 先描述,再组织
(因此可以大概猜到每一个被打开的文件,在OS内部,一定要存在对应的描述文件属性的结构,类似PCB!)
像PCB一般,把一个文件打开就创建一个结构,然后将其用链表串起来,最后对打开文件的管理就变成了对链表的增删查改
如果我们在磁盘上新建一个大小为0的文件,什么都不写,此时这个文件会不会占据磁盘空间呢??? ---> 会的,因为其存在的各种属性也是数据,也会占据一定的空间
即文件 = 属性 + 内容
2.以w写方式打开
打开方式为 w 时
1.如果不存在,就在当前路径下,新建指定的文件
2.若存在,默认打开文件的时候,就会先把目标文件清空
3.以a追加方式打开
即 appending 追加,不会清空文件,而是在后面追加内容
4.重定向
echo ... > xxx文件 即 重定向操作
输出重定向一定是文件操作
每次写入文件内容都是新的,与以w方式打开文件方式一样(先清空,后写入)
通过这个特性,可以将 echo > 符号做出两个新的用途:
1.创建新文件:
2.清空文件:
echo ... >> xxx 追加重定向 即与以 a方式 打开文件一致