文件:信息存储载体的单元;抽象为字符序列、数据流;

抽象的结果是简化所有IO设备的操作描述;

 

UNIX 是第一个把 I/O 抽象成一个统一的概念和一系列原语的系统。

https://juejin.im/post/5b652d346fb9a04fc03129e6

 

字节流==数据流

 

IO设备:文档、目录、磁盘驱动器、CD-ROM、调制解调器、键盘、打印机、显示器、终端。

IO设备的抽象:

传统上,计算机上用于 IO 的设备大致可以分成两大类,块(block)设备和流(stream)设备。前者可以抽象成一组数据块,读写必须数据块为单位。后者可以抽象成一个数据流,你可以一个字节一个字节的读写,但写出去的数据就是写出去了,没法再改。


 

文件操作原语:

in Unix, everything is a file.This simplifies the manipulation of data and devices into a set of core system calls: open(), read(), write(), lseek(), and close().

 

1、在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件。如:普通文件、目录、字符设备、块设备、套接字等

2、当一个文件被进程打开,就会创建一个文件描述符。这时候,文件的路径就成为了寻址系统,文件描述符成为了字节流的接口

3、相对于普通文件这类真实存在于文件系统中的文件,tcp socket、unix domain socket等这些存在于内存中的特殊文件在被进程打开的时候,也会创建文件描述符。所以"一切皆文件"更准确的描述应该是"一切皆文件描述符"

 


------------------越是喧嚣的世界,越需要宁静的思考------------------ 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。