文件的7种类型
Linux一切皆文件,Linux文件一共分为7类分别是- d c s p l b。
普通文件(regular file -)
- 普通文件根据存放的内容的不同,又分为如下两种:
-
文本文件
存放的都是文字编码,文本编辑器打开后,会将这些文字编码翻译为文字图形,供人识别
-
纯二进制文件
比如经过编译后得到的可执行文件,里面放的是cpu执行的纯二进制机器码,由于文本编辑器只认识文字编码,所以用文本编辑器打开后,显示的内容无法是错乱的,无法识别的。
其实不管存放的是文字编码,还是机器码,在计算机中存储时,其实都是以二进制形式存放的,只不过我们这里可刻意的把机器码这类非文字编码的数据,特意强调为了二进制数据。
-
- 以存储5为例
- 以'5'存储,在文件中存放的是'5'的ASCII码为53(00110101),在计算机中实际存放的是00110101。
- 以整数5存储:文件中实际存放的整数5(00000101),在计算机中实际存放的是00000101
对Linux内核而言,这两种文件并无区别,至于文件中的数据如何解释,则由处理这些数据的应用程序(比如文本编辑器)来决定。 - 不管是文字编码数据,还是纯二进制数据,程序调用read、write读写文件时,没有任何区别。
目录文件(director file:d)
目录是一种特殊的文件,专门用于管理其他文件
字符特殊文件(character special file:c)
字符设备文件,就是字符设备驱动程序,在上层的表现形式。
当应用程序调用底层字符设备驱动程序,实现对某个字符设备进行读写时,上层就需要对接底层的字符设备驱动程序,字符设备驱动在上层,会以"字符设备文件"的形式表现出来,我们通过open、read、write去读写字符设备文件,就实现了和底层字符设备驱动程序的交互。
块设备文件(block special file:b):对应块设备文件
- 块设备文件,是块设备驱动程序在上层的表现形式
- 字符设备与块设备的区别?
- 字符设备
- 以字节单位来操作数据
- 比如:键盘、鼠标、显示器都等是字符设备。
- 字符设备的驱动程序,就称为“字符设备驱动程序”
- 块设备
- 块设备存储的数据量往往非常大,为了提高读写效率,都是以块(1024字节)为单位来操作数据。
- 比如:电脑硬盘、移动硬盘、u盘等,凡是涉及大量数据存储的,都是以块为单位来操作数据的,都是块设备。
- 字符设备
管道文件(FIFO:p)
管道文件,用于实现不同进程(程序)之间的通信,管道是OS提供的一种纯代码层面的通信机制。
A进程——>管道文件——>B进程
套接字文件(socket:s)
专门用于网络通信的文件。
讲到网络编程时,再来具体介绍
符号连接(symbolic link: l)
其实就是一种快捷图标,背后指向了另一个文件。