向终端/控制台提供类似文件 API 的用例

向终端/控制台提供类似文件 API 的用例

它被解释在这个堆栈溢出线程每个逻辑终端都有一个“伪终端”,并且写入其中一个:

$ cat some-file.txt > /dev/ttys002

将使数据出现在该终端窗口中。向终端窗口提供类似文件的 API 的原因是什么?这有什么有用的用例吗?

到这里逐字复制。

不仅限于伪终端,还可用于/dev/tty*以及。

答案1

大多数硬件设备都提供类似文件的 API。这样做是因为它使操作系统的设计和应用程序的设计变得更简单。操作系统只需具有文件API,而不需要单独的终端API、单独的磁盘API和单独的声音API等。不使用特定于特定类型硬件的功能的应用程序可以使用文件 API,而无需关心它们是否正在访问常规文件或硬件设备。

许多硬件具有特定于某种设备类型的功能。应用程序可以通过以下方式调用这些功能读写控制。某些硬件不会显示为文件,因为您无法简单地读取或写入字节流。例如,Linux 不会将网络接口公开为设备文件,因为网络接口工作在数据包上,而不是单个字节上。

从历史上看,终端是硬件设备。如今,大多数终端都是由模拟器提供的,无论是在图形环境中还是通过网络。尽管如此,即使伪终端看起来也像硬件设备,因为内核包含特殊处理来跟踪哪些进程正在哪个终端上运行。

在每个 Unix 变体上,/dev/tty意思是“该进程的当前终端”。换句话说,每当进程打开该文件时,它都会指定该进程的控制终端)。这允许进程通过其终端进行交互,即使其标准输入和输出描述符已被重定向。

每个终端都有一个关联的设备文件,它可以是硬件终端(tty,例如/dev/tty1, /dev/tty2, ... 用于 Linux 上的文本模式虚拟控制台,或者/dev/ttyS0, ... 用于 Linux 上的串行端口)或模拟终端(pty,pseudo 的缩写)/dev/pts/NUMBER-Linux 上的终端;进程通过该文件与终端驱动程序或模拟器交换数据。

这是因为终端是可以运行应用程序并将其输出显示到终端的文件。当您在命令行运行程序时,默认情况下,其输出将发送到终端,但您可以将其重定向到文件。

相关内容