查看字符设备文件的内容

查看字符设备文件的内容

/dev/sda为什么可以像使用cat十六进制编辑器一样查看块设备文件的内容?为什么我不能对像这样的字符设备做同样的事情/dev/pts/3

答案1

Unix 上的设备就像文件一样,但又不一样。对于某些设备来说,它对于设备软件的读取和写入的实现者来说更有意义,而对于其他设备来说,仅实现其中一种更有意义。

这并不是因为/dev/pts/3它是字符设备而无法读​​取,而是存在其他可以读取的设备。对于该pts设备,我可以看到读回可能意味着将字符作为screenwidth*screenheight长度的线性数组从屏幕上取回,但这并不是非常有用也不是高效的。

虽然年纪有点大了,Linux 设备驱动程序,第 3 章是关于这个主题的有趣读物。

答案2

这(不一定)不是字符设备和块设备之间的区别。例如,/dev/urandom是一个字符设备,您当然可以cat在它上使用。

在您的情况下,/dev/sda指的是已经存在的存储,因此从中读取会读取现有的存储。然而,/dev/pts/3它是一个伪终端,从它读取数据会阻塞(等待),直到下一个输入字符准备好为止。

另一个区别是您可以寻找到设备上的特定位置,该位置提供对持久存储的访问,但您无法在终端上查找。

答案3

解释了它/dev/pts/3的用途以及你可以用它做什么。/dev/sda指向您可以读取和写入的 HDD/SSD。当您在 上编辑数据时/dev/sda,您将直接写入驱动器,而不一定写入分区。如果这样做,可能会损坏分区,因此它通常不用于保存数据。然而,在某些情况下,直接写入磁盘会很方便(例如,dd为了安全地擦除磁盘)。在 Unix 中,一切都是文件,但您无法读取和/或写入每个文件。

相关内容