| http://blog.sina.com.cn/s/blog_6151984a0100ejfg.html /sbin/getty -L 38400 ttyS0 vt100 使用的命令: tty 查看使用哪個終端 who 查看登入的使用者 w 查看登入的使用者 echo "abc" >> /dev/pts/* echo "123" >> /dev/ttyAMA0 不同終端之間資訊的傳遞 當你運行一個程式的時候,此進程一定會對應一個終端,printf列印資訊會在終端出現,而當程式進入核心態時(如調用驅動),printk列印資訊會在核心終端出現(hisilicon機頂盒console=ttyAMA0=串口0) 在PC上console=tty0=tty1~6,/dev/tty=`tty`=本控制台 在嵌入式機上console=ttyS0=串口 echo "haha" > /dev/console 輸出到系統控制台(console=ttyS0,表示系統控制台是串口) echo "haha" > /dev/tty 和下面的相等 echo "haha" > `tty` 輸出到本控制台 (tty命令就是輸出本控制台) console包括: tty和framebuffer tty包括:ttys*、tty*和/dev/pts/*等(字元型) framebuffer包括:LCD、VGA等等裝置 ============================================================================ 1,序列埠終端 裝置名稱是/dev/ttySn(這裡的n是數字0,1,2,3…..) 2,偽終端(PTY) 偽終端是指遠程登入形成的終端,其控制台控制檔案在目錄/dev/pts下 命名從0,1,2,3,4……一直往後 你可以echo “OKOK” > /dev/pts/0看看效果 3,虛擬控制台(終端) 虛擬控制台是機器正常啟動後自動啟動的控制台 可以用Ctrl+Alt+F1到Ctrl+Alt+F6來切換(預設只開6個虛擬控制台) 其裝置控制檔案分別為/dev/tty1、/dev/tty2、/dev/tty3、/dev/tty4、/dev/tty5和/dev/tty6 還有/dev/tty0是對應當前的虛擬控制台(終端) 4,/dev/tty 這個是指當前進程的控制終端 可以看做是到控制終端的連結 用tty命令可以看到當前這個shell的控制終端 5,/dev/console 這個是系統控制台 很多的系統資訊會打到這裡 一般情況下 /dev/console是指向/dev/tty0 ============================================================================ (1)/dev/console是系統控制終端,系統的錯誤資訊什麼的都輸出到這裡。 (2)/dev/tty(n或者Sn)是進程式控制制台,如果在進程裡開啟一個這樣的檔案且該檔案不是其他進程的控制終端時, 那麼該檔案就是這個進程的控制終端。那麼我們進程printf一個資料就是輸出到這裡. (3)在本機上,使用者可以使用alt+f1~fn切換控制台,看起來感覺存在多個螢幕,這種虛擬控制台對應tty1~n 但實際上機器只有一個螢幕,也就是我們看到的這個螢幕,對應console。 可以理解為console指向啟用的那個tty(詳細來說不是,tty0才是啟用的那個tty,準確地說是啟用的那個tty 才將輸出顯示到console). 曆史上,console指主機本身的螢幕小鍵盤,而tty指用電纜連結的其它位置的控制台(僅包含螢幕和鍵盤) #include <fcntl.h> #include <unistd.h> int main() { int fd; fd = open( "/dev/tty2 ", O_WRONLY | O_NOCTTY); write(fd, "hello tty2\n ", 10); return 0; } (4) 終端是一種字元型裝置,它有多種類型,通常使用tty來簡稱各種類型的終端裝置。tty是 Teletype的縮寫。 Teletype是最早出現的一種終端裝置,很象電傳打字機(或者說就是),是由Teletype公司生產的。 裝置名稱放在特殊檔案目錄/dev/下,終端特殊裝置檔案一般有以下幾種: 1.序列埠終端(/dev/ttySn) 序列埠終端(Serial Port Terminal)是使用電腦序列埠串連的終端裝置。 電腦把每個序列埠都看作是一個字元裝置。有段時間這些序列埠裝置通常被稱為終端裝置, 因為那時它的最大用途就是用來串連終端。 這些序列埠所對應的裝置名稱是/dev/tts/0(或/dev /ttyS0)、/dev/tts/1(或/dev/ttyS1)等, 裝置號分別是(4,0)、(4,1)等,分別對應於DOS系統下的COM1、 COM2等。 若要向一個連接埠發送資料,可以在命令列上把標準輸出重新導向到這些特殊檔案名稱上即可。 例如,在命令列提示符下鍵入: echo test > /dev/ttyS1 會把單詞”test”發送到串連在ttyS1(COM2)連接埠的裝置上。
2.偽終端(/dev/pty/)
偽終端(Pseudo Terminal)是成對的邏輯終端裝置,例如/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程式就通過“偽終端”進行通訊。 通過使用適當的軟體,就可以把兩個甚至多個偽終端裝置串連到同一個物理序列埠上。 3.控制終端(/dev/tty)
如果當前進程有控制終端(Controlling Terminal)的話,那麼/dev/tty就是當前進程的控制終端的裝置特殊檔案。 可以使用命令”ps –ax”來查看進程與哪個控制終端相連。對於你登入的shell,/dev/tty就是你使用的終端, 裝置號是(5,0)。 使用命令 ”tty”可以查看它具體對應哪個實際終端裝置。/dev/tty有些類似於到實際所使用終端裝置的一個聯結。
4.控制台終端(/dev/ttyn, /dev/console) 在UNIX系統中,電腦顯示器通常被稱為控制台終端(Console)。它模擬了類型為Linux的一種終端 (TERM=Linux),並且有一些裝置特殊檔案與之相關聯:tty0、tty1、tty2等。 當你在控制台上登入時,使用的是tty1。使用Alt+[F1—F6]按鍵組合時,我們就可以切換到tty2、tty3等上面去。 tty1 –tty6等稱為虛擬終端,而tty0則是當前所使用虛擬終端的一個別名,系統所產生的資訊會發送到該終端上。 因此不管當前正在使用哪個虛擬終端,系統資訊都會發送到控制台終端上。 你可以登入到不同的虛擬終端上去,因而可以讓系統同時有幾個不同的會話期存在。 只有系統或超級使用者root可以向/dev/tty0進行寫操作,
5.其它類型 還針對很多不同的字元裝置存在有很多其它種類的終端裝置特殊檔案。 例如針對ISDN裝置的/dev/ttyIn終端裝置等。這裡不再贅述 |