天天看點

Linux中的tty、pty、pts與ptmx辨析一、 tty(teletypes)二、 pty(pseudo-tty)三、 pts(pseudo-terminal slave)四、 ptmx(pseudo-terminal master)

一、 tty(teletypes)

tty裝置包括虛拟控制台,序列槽以及僞終端裝置。tty的種類有很多:

Linux中的tty、pty、pts與ptmx辨析一、 tty(teletypes)二、 pty(pseudo-tty)三、 pts(pseudo-terminal slave)四、 ptmx(pseudo-terminal master)

1.1 tty

其中,tty是目前程序的控制終端的裝置特殊檔案。可以通過如下方式驗證:

[email protected]:/dev$ echo hello >/dev/tty
hello

           

當我們将輸出重定向到/dev/tty檔案時,結果總會輸出到目前終端上。

1.2 ttyn

tty0~tty63是虛拟終端的裝置特殊檔案。/dev/tty0代表目前虛拟控制台,而/dev/tty1等代表第一個虛拟控制台。使用Alt+[F1—F6]組合鍵時,我們就可以切換到tty2、tty3等上面去。(待深入補充)

1.3 ttySn

ttyS代表tty serial,/dev/ttyS*是串行終端裝置。這些裝置檔案會映射到實體串行端口,如果我們執行下列指令:

echo 2 > /dev/ttyS2
           

那麼在對應的實體端口,如COM2上可以檢測到輸出。

二、 pty(pseudo-tty)

pty全稱pseudo-tty,即僞終端裝置,用于遠端連接配接。它由master和slave兩端構成,在任何一端的輸入都會傳達到另一端。與tty不同,系統中并不存在pty這種檔案,它是由pts(pseudo-terminal slave)和ptmx(pseudo-teiminal master)兩種裝置檔案來實作的。

三、 pts(pseudo-terminal slave)

pts(pseudo-terminal slave)即僞終端的slave端。在Linux的/dev/pts/檔案夾下有對應設裝置檔案。

我們可以通過tty指令檢視目前使用者的登入終端,如下圖所示:

[email protected]:/dev$ tty
/dev/pts/1
           

當我們裝置檔案/dev/pts/1進行輸出時,螢幕上會顯示相應輸出:

[email protected]:/dev$ echo hello >/dev/pts/1
hello
           

倘若通路别的slave檔案,如/dev/pts/2,則會傳回權限不足錯誤:

[email protected]:/dev$ echo hello >/dev/pts/2
-bash: /dev/pts/2: Permission denied
           

四、 ptmx(pseudo-terminal master)

ptmx是僞終端的master端。在/dev下僅有2個ptmx檔案,其資訊如下:

[email protected]:/dev$ ll /dev/ptmx
crw-rw-rw- 1 root tty 5, 2 Jan 16 16:38 /dev/ptmx
[email protected]:/dev$ ll /dev/pts/ptmx
c--------- 1 root root 5, 2 Mar 17  2018 /dev/pts/ptmx
           

從中可以看出任何使用者都可對/dev/ptmx進行讀寫,而任何使用者對/dev/pts/ptmx都沒有讀寫權限。(這兩個檔案更加具體的作用暫不清楚,留待後續深入)