这是我的 bash 会话:
lrwx------ 1 stas stas 64 Mar 5 18:18 0 -> /dev/pts/0
lrwx------ 1 stas stas 64 Mar 5 18:18 1 -> /dev/pts/0
lrwx------ 1 stas stas 64 Mar 5 18:18 2 -> /dev/pts/0
我们看到 bash 既可以读取也可以写入/dev/pts/0
. 我的问题是:这个过程为什么不读取它刚刚在那里写的内容?是什么让只master pty
接收数据?
/dev/pts/0
不是常规文件而是字符设备节点,如ls -l
输出的第一列所示:因此,读写操作不是访问磁盘上的某个文件,而是由一个称为设备驱动程序的软件处理,该软件几乎可以做任何作者想让它做的事情,从什么都不做(如在后面的驱动程序的情况
/dev/null
)来详细说明对计算机中某些硬件的操作(如实际硬件驱动程序的情况。)在该
/dev/pts/0
驱动程序的特定情况下写入(非常简化):它不是为了将写入从设备的数据提供回从设备上的读取操作,因此不会发生这种情况。