Linux

關於 TTY 和 PTY 的困惑

  • October 14, 2021

我試圖理解這個話題,但顯然,對於我的大腦來說,這太難了。

終端設備條目通常位於兩個目錄中:/dev 和 /dev/pts。/dev 目錄包含虛擬控制台(例如,/dev/tty1)和 BSD 偽終端的條目。/dev/pts 目錄包含(System V 風格)偽終端從設備的條目

這是從《Linux 程序介面》一書中摘錄的。

根據上面的斷言,在/dev/pts目錄中我可以找到偽終端的從屬部分。

那為什麼如果我使用tty它列印的命令呢/dev/pts/0?上面的斷言不完整嗎?我的意思是,終端和偽終端之間有關係嗎?因為如果/dev/pts我只能找到偽終端對的輔助部分,那麼終端是否像偽終端一樣實現?

總是來自“Linux program iterface”一書:

在正常的登錄會話中,shell 直接連接到使用者的終端。

所以我可以根據這個斷言制定一個方案:

在此處輸入圖像描述

但是,如果我的終端與從設備相關聯(如 tty 命令所說),則該方案根本不正確,它變為:

在此處輸入圖像描述

經過這些考慮,終端是像偽終端對(帶有從屬和主控)一樣實現,還是只是像從屬文件(或類似的東西)一樣實現?

終端和偽終端之間有關係嗎?

終端最初是類似這些類似這些的東西。unix 系統上的終端設備文件 ( /dev/tty1) 將通過作業系統連接到這種硬體,通常是通過串列介面。

如果您寫入文件,輸出會出現在列印機 (ASR33) 或螢幕 (VT100) 上,如果您在鍵盤上鍵入,則可以從文件中讀取。此外,它還支持特殊命令(ioctl’s)來設置串列線速度、通信協議等。

偽終端是終端的替代品,終端的另一端不是某種硬體,而是第二個“文件”(主機)。從端的行為與硬體終端的設備文件完全相同,因此您可以將外殼連接到它。另一端的應用程序可以使用主控部分來模擬硬體終端。例如,xterm使用偽終端對,並使用主控部分與 X 系統介面。

有一個小問題:主部分在文件系統中永遠不可見。如果你願意,它是一個“隱形文件”。

那為什麼如果我使用它列印/dev/pts/0 的tty 命令呢?

因為您正在鍵入的外殼程序可能在xterm或類似的終端仿真器中執行。今天很少有人使用真正的硬體終端。

是的,如果您將“終端”替換為“終端模擬器”(模擬終端的應用程序),那麼您的第二張圖就接近了。

今天,很多人在說“終端仿真器”時只說“終端”。

引用自:https://unix.stackexchange.com/questions/673184