向終端機/控制台提供類別文件 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 上的進程透過該檔案與終端驅動程式或模擬器交換資料。

這是因為終端機是可以運行應用程式並將其輸出顯示到終端的檔案。當您在命令列運行程式時,預設情況下,其輸出將發送到終端,但您可以將其重定向到檔案。

相關內容