字符设备文件是一种特殊的 linux 文件,您可以在其中读取和写入无限数量的字符以及您可以在内核设备驱动程序中定义的其他文件操作。
但是这个文件真的存在吗?如果我们将其视为普通文本文件,是否可以读取其中的内容?像主要的,次要的数字?
我们对软链接有类似的东西。在 linux 机器上,链接实际上是系统中的一个路径,但是在将它提交到 git 之后,例如我们看到只有一个字符串的“普通”文本文件,一个到源目录的路径。
字符设备文件是一种特殊的 linux 文件,您可以在其中读取和写入无限数量的字符以及您可以在内核设备驱动程序中定义的其他文件操作。
但是这个文件真的存在吗?如果我们将其视为普通文本文件,是否可以读取其中的内容?像主要的,次要的数字?
我们对软链接有类似的东西。在 linux 机器上,链接实际上是系统中的一个路径,但是在将它提交到 git 之后,例如我们看到只有一个字符串的“普通”文本文件,一个到源目录的路径。
您会发现文件系统中有一个条目,其中包含此特定条目描述设备的信息。它不是一个普通文件,它仍然是文件系统中的一个条目。
谁是“我们”,什么是“将其视为普通文本文件”?
您可以
open
像普通文件一样创建字符设备文件系统条目,您可以read
从它开始,也可以write
到它,但不能seek
在其中。所以,是的,任何从头开始读取文件的东西都可以打开和字符设备——但它很可能永远不会读完它,因为字符设备没有“到此结束”的标记(除非有什么东西物理上结束了字符设备)。
不,主要和次要设备号是设备文件的属性,而不是内容。您从设备文件中读取的内容将是字符设备产生的实际数据。
不,那是上面的一层,这就是 git 处理这些事情的方式。甚至 git 也会绕过“这不是一个普通文件;在支持符号链接的系统上,这样表示它”的信息。同样,在符号链接上,指向的路径是符号链接的一个属性,如果您
open
打开符号链接并从中读取,您将获得链接到的内容。所以,在属性和内容之间做出心理上的区别,你会没事的。