目录
前言 编辑
01 linux系统查看文件类型
02 普通文件' - '
03 目录文件' d '
04 字符设备文件' c '和块设备文件' b '
05 符号链接文件' l '
06 管道文件' p '
07 套接字文件' s '
总结
前言
🎬 个人主页:@ChenPi
🐻推荐专栏1: 《C++_@ChenPi的博客-CSDN博客》✨✨✨
🔥 推荐专栏2: 《Linux C应用编程(概念类)_@ChenPi的博客-CSDN博客》✨✨✨
🛸推荐专栏3: 《 链表_@ChenPi的博客-CSDN博客 》 ✨✨✨
🌺本篇简介 : 上几章我们学习了关于文件操作的系统调用和C函数文件相关的API那学习这些有什么用呢?
我们说过Linux底下皆文件,说了这么久,那都有什么不同呢?还有就是windows里面的后缀名在Linux影响大不大
01 linux系统查看文件类型
在 Linux 系统下,可以通过 stat 命令或者 ls 命令来查看文件类型,如下所示
stat 命令非常友好,会直观把文件类型显示出来;
对于 ls 命令来说,并没有直观的显示出文件的类型, 而是通过符号表示出来,如ls -la
下图表示符号代表不同的文件类型
- ' - ':普通文件
- ' d ':目录文件
- ' c ':字符设备文件
- ' b ':块设备文件
- ' l ':符号链接文件
- ' s ':套接字文件
- ' p ':管道文件
02 普通文件' - '
- 普通文件(regular file)在 Linux 系统下是最常见的,譬如文本文件、二进制文件,我们编写的源代码 文件这些都是普通文件,也就是一般意义上的文件。普通文件中的数据存在系统磁盘中,可以访问文件中的 内容,文件中的内容以字节为单位进行存储于访问。普通文件可以分为两大类:文本文件和二进制文件。
- 文本文件:文件中的内容是由文本构成的,所谓文本指的是 ASCII 码字符。文件中的内容其本质 上都是数字(因为计算机本身只有 0 和 1,存储在磁盘上的文件内容也都是由 0 和 1 所构成),而 文本文件中的数字应该被理解为这个数字所对应的 ASCII 字符码;譬如常见的.c、.h、.sh、.txt 等 这些都是文本文件,文本文件的好处就是方便人阅读、浏览以及编写。
- 二进制文件:二进制文件中存储的本质上也是数字,只不过对于二进制文件来说,这些数字并不是 文本字符编码,而是真正的数字。譬如 Linux 系统下的可执行文件、C 代码编译之后得到的.o 文 件、.bin 文件等都是二进制文件
03 目录文件' d '
目录(directory)就是文件夹,文件夹在 Linux 系统中也是一种文件,是一种特殊文件,同样我们也可 以使用 vi 编辑器来打开文件夹,如下所示:
可以看到,文件夹中记录了该文件夹当下的路径以及该文件夹下所存放的文件。可以使用mkdir,rmkdir函数创建删除文件夹,使用opendir()、readdir()和 closedir()来打开、读取以及关闭目录
04 字符设备文件' c '和块设备文件' b '
Linux 系统下,一切皆文件,也包括各种硬件设备。字符设备文件(character)、块设备(block) 对应的是硬件设备,在 Linux 系统中,硬件设备会对应到一个设备文件,应用程序通过对设备文件的读写来 操控、使用硬件设备,譬如 LCD 显示屏、串口、音频、按键等,在本教程的进阶篇内容中,将会向大家介 绍如何通过设备文件操控、使用硬件设备。 Linux 系统中,可将硬件设备分为字符设备和块设备,所以就有了字符设备文件和块设备文件两种文件 类型。虽然有设备文件,但是设备文件并不对应磁盘上的一个文件,也就是说设备文件并不存在于磁盘中, 而是由文件系统虚拟出来的,一般是由内存来维护,当系统关机时,设备文件都会消失;字符设备文件一般 存放在 Linux 系统/dev/目录下,所以/dev 也称为虚拟文件系统 devfs。
05 符号链接文件' l '
符号链接文件(link)类似于 Windows 系统中的快捷方式文件,是一种特殊文件,它的内容指向的是另 一个文件路径,当对符号链接文件进行操作时,系统根据情况会对这个操作转移到它指向的文件上去,而不 是对它本身进行操作,譬如,读取一个符号链接文件内容时,实际上读到的是它指向的文件的内容。
如果大家理解了 Windows 下的快捷方式,那么就会很容易理解 Linux 下的符号链接文件。上图 中 的 rec,stderr,stdin,stdout 等这些文件都是符号链接文件,箭头所指向的文件路径便是符号链接文件所指 向的文件。关
06 管道文件' p '
管道文件(pipe)主要用于进程间通信
07 套接字文件' s '
套接字文件(socket)也是一种进程间通信的方式,与管道文件不同的是,它们可以在不同主机上的进 程间通信,实际上就是网络通信
总结
本小节简单地介绍了 Linux 系统中的 7 种文件类型,包括:普通文件、目录、字符设备文件、块 设备文件、符号链接文件、管道文件以及套接字文件,下面对它们进行一个简单地概括:
- 普通文件是最常见的文件类型;
- 目录也是一种文件类型;
- 设备文件对应于硬件设备;
- 符号链接文件类似于 Windows 的快捷方式;
- 管道文件用于进程间通信;
- 套接字文件用于网络通信