linux下tty, ttyn, pts, pty, ttySn, console理解
這一下涉及很多概念:終端,偽終端,虛擬終端,控制終端,串行終端,控制臺,……。歷史原因這些概念有些模糊,我也理不太清楚。就我直觀對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。
?
總結
以上是生活随笔為你收集整理的linux下tty, ttyn, pts, pty, ttySn, console理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 打印输出重定向的问题
- 下一篇: linux账号管理笔记