pts

PTS是pseudoterminalslave的簡稱,指偽終端(虛擬終端)。

PTS(pseudoterminalslave):偽終端(虛擬終端)

偽終端

偽終端是成對的邏輯終端設備,例如/dev/ptyp3和/dev/ttyp3(或著在設備檔案系統中分別是/dev/pty/m3和/dev/pty/s3)。它們與實際物理設備並不直接相關。如果一個程式把ttyp3看作是一個串列連線埠設備,則它對該連線埠的讀/寫操作會反映在該邏輯終端設備對的另一個上面(ttyp3)。而ttyp3則是另一個程式用於讀寫操作的邏輯設備。這樣,兩個程式就可以通過這種邏輯設備進行互相交流,而其中一個使用ttyp3的程式則認為自己正在與一個串列連線埠進行通信。這很象是邏輯設備對之間的管道操作。
對於ttyp3(s3),任何設計成使用一個串列連線埠設備的程式都可以使用該邏輯設備。但對於使用ptyp3的程式,則需要專門設計來使用ptyp3(m3)邏輯設備。例如,如果某人在網上使用telnet程式連線到你的計算機上,則telnet程式就可能會開始連線到設備ptyp2(m2)上(一個偽終端連線埠上)。此時一個getty程式就應該運行在對應的ttyp2(s2)連線埠上。當telnet從遠端獲取了一個字元時,該字元就會通過m2、s2傳遞給getty程式,而getty程式就會通過s2、m2和telnet程式往網路上返回”login:”字元串信息。這樣,登錄程式與telnet程式就通過“偽終端”進行通信。通過使用適當的軟體,就可以把兩個甚至多個偽終端設備連線到同一個物理串列連線埠上。在使用設備檔案系統(devicefilesystem)之前,為了得到大量的偽終端設備特殊檔案,HP-UXAIX等使用了比較複雜的檔案名稱命名方式。

為什麼需要偽終端

像CCE,xterm,vcongui等程式,需要截獲字元應用程式的輸出,以便在自己的設備上繪製終端輸出.*像xterm,vcongui等程式,還要將自己的輸入轉換成字元應用程式能夠理解的輸入.*利用偽終端,上述這些程式就可以對字元應用程式的終端輸入和輸出進行過慮,從而實現與普通終端一樣的輸入和輸出處理

偽終端機制

偽終端由兩部分組成:主控終端和從屬終端,分別由兩個進程處理,這兩個進程往往是父子進程.*父進程打開偽終端的主控終端,然後調用fork派生子進程.*子進程建立新的會話,並打開對應的從屬終端,並將該從屬終端複製為標準輸入,標準輸出和標準錯誤.*子進程調用exec執行新的程式,該從屬終端就形成了新會話的控制終端.*對於子進程來說,從屬終端就是它們的標準輸入,標準輸出和標準錯誤,同時也是一個終端設備.因此,可以採用6.6小節中的終端屬性進行控制,但因為並不是真正的終端,因此波特率,線路控制函式等等將被忽略.*任何寫入主控終端的數據將成為從屬終端的輸入;任何寫入從屬終端的數據將成為主控終端的輸入.這樣,主控終端上的進程(父進程)就能夠為從屬終端生成輸入,而且還能夠處理從屬終端上的輸出。

相關詞條

相關搜尋

熱門詞條