linux 終端設備理解

        這一下涉及很多概念:終端,僞終端,虛擬終端,控制終端,串行終端,控制檯,……。歷史原因這些概念有些模糊,我也理不太清楚。就我直觀對dev下設備而言來稍微解釋下:

  • /dev/tty
    控制終端,即當前用戶正在使用的終端,是一個映射,指向當前所使用的終端(例如/dev/tty1,/dev/pts/0)。往/dev/tty下寫數據總是寫到當前終端。

  • /dev/ttyn
    虛擬終端,例如ubuntu不啓動圖形界面時,那麼就會默認連接到/dev/tty1這個虛擬終端。

  • /dev/pts/n
    僞終端,例如網絡登錄的telnet就是使用僞終端。這是UNIX98的實現風格,slave爲/dev/pts/n是,master一般爲/dev/ptmx。

  • /dev/pty[p-za-e][0-9a-f]
    僞終端,這是BSD的實現風格,slave一般使用/dev/tty[p-za-e][0-9a-f]這種格式,而master一般使用/dev/pty[p-za-e][0-9a-f]這種格式。

  • /dev/ttySn
    串行終端,串口設備對應的終端。

  • /dev/console
    應用層的控制檯,一些進程的打印信息會輸出到控制檯。在用戶層和內核都有一個console,分別對應printf和printk的輸出。kernel下的console是輸入輸出設備driver中實現的簡單的輸出console,只實現write函數,並且是直接輸出到設備。user空間下的console,實際就是tty的一個特殊實現,大多數操作函數都繼承tty,所以對於console的讀寫,都是由kernel的tty層來最終發送到設備。

往/dev下各個終端設備寫數據測試:
往/dev/ttyn, /dev/pts/n, /dev/ptyn, /dev/ttySn會寫到對應的終端上去。
往/dev/tty上寫則會寫到當前終端。
往/dev/console寫情況則不太一樣,在ubuntu上測試時(沒啓動圖像界面,啓動的/dev/tty1)會寫到/dev/tty1。板子上則會寫到/dev/ttyS0。

參考:
辛星淺析tty、pty與pts
Linux中tty、pty、pts的概念區別
linux下tty,控制檯,虛擬終端,串口,console(控制檯終端)詳解 終端,虛擬終端和僞終端
Linux 串行終端,虛擬終端,僞終端,控制終端,控制檯終端的理解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章