• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 297,  comments - 15,  trackbacks - 0
            基本概念:

            1> tty(終端設(shè)備的統(tǒng)稱):
            tty一詞源于Teletypes,或者teletypewriters,原來(lái)指的是電傳打字機(jī),是通過(guò)串行線用打印機(jī)鍵盤通過(guò)閱讀和發(fā)送信息的東西,后來(lái)這東西被鍵盤與顯示器取代,所以現(xiàn)在叫終端比較合適。
            終端是一種字符型設(shè)備,它有多種類型,通常使用tty來(lái)簡(jiǎn)稱各種類型的終端設(shè)備。


            2> pty(虛擬終端):
            但是如果我們遠(yuǎn)程telnet到主機(jī)或使用xterm時(shí)不也需要一個(gè)終端交互么?是的,這就是虛擬終端pty(pseudo-tty)


            3> pts/ptmx(pts/ptmx結(jié)合使用,進(jìn)而實(shí)現(xiàn)pty):
            pts(pseudo-terminal slave)是pty的實(shí)現(xiàn)方法,與ptmx(pseudo-terminal master)配合使用實(shí)現(xiàn)pty。

            Linux終端:

            在Linux系統(tǒng)的設(shè)備特殊文件目錄/dev/下,終端特殊設(shè)備文件一般有以下幾種:
            1、串行端口終端(/dev/ttySn)
            串行端口終端(Serial Port Terminal)是使用計(jì)算機(jī)串行端口連接的終端設(shè)備。計(jì)算機(jī)把每個(gè)串行端口都看作是一個(gè)字符設(shè)備。有段時(shí)間這些串行端口設(shè)備通常被稱為終端設(shè)備,因?yàn)槟菚r(shí)它的最大用途就是用來(lái)連接終端。這些串行端口所對(duì)應(yīng)的設(shè)備名稱是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,設(shè)備號(hào)分別是(4,0), (4,1)等,分別對(duì)應(yīng)于DOS系統(tǒng)下的COM1、COM2等。若要向一個(gè)端口發(fā)送數(shù)據(jù),可以在命令行上把標(biāo)準(zhǔn)輸出重定向到這些特殊文件名上即可。例如,在命令行提示符下鍵入:echo test > /dev/ttyS1會(huì)把單詞”test”發(fā)送到連接在ttyS1(COM2)端口的設(shè)備上。可接串口來(lái)實(shí)驗(yàn)。

            2、偽終端(/dev/pty/)
            偽終端(Pseudo Terminal)是成對(duì)的邏輯終端設(shè)備(即master和slave設(shè)備, 對(duì)master的操作會(huì)反映到slave上)。
            例如/dev/ptyp3和/dev/ttyp3(或者在設(shè)備文件系統(tǒng)中分別是/dev/pty/m3和 /dev/pty/s3)。它們與實(shí)際物理設(shè)備并不直接相關(guān)。如果一個(gè)程序把ptyp3(master設(shè)備)看作是一個(gè)串行端口設(shè)備,則它對(duì)該端口的讀/ 寫操作會(huì)反映在該邏輯終端設(shè)備對(duì)應(yīng)的另一個(gè)ttyp3(slave設(shè)備)上面。而ttyp3則是另一個(gè)程序用于讀寫操作的邏輯設(shè)備。

            這樣,兩個(gè)程序就可以通過(guò)這種邏輯設(shè)備進(jìn)行互相交流,而其中一個(gè)使用ttyp3的程序則認(rèn)為自己正在與一個(gè)串行端口進(jìn)行通信。這很象是邏輯設(shè)備對(duì)之間的管道操作。對(duì)于ttyp3(s3),任何設(shè)計(jì)成使用一個(gè)串行端口設(shè)備的程序都可以使用該邏輯設(shè)備。但對(duì)于使用ptyp3的程序,則需要專門設(shè)計(jì)來(lái)使用 ptyp3(m3)邏輯設(shè)備。

            例如,如果某人在網(wǎng)上使用telnet程序連接到你的計(jì)算機(jī)上,則telnet程序就可能會(huì)開(kāi)始連接到設(shè)備 ptyp2(m2)上(一個(gè)偽終端端口上)。此時(shí)一個(gè)getty程序就應(yīng)該運(yùn)行在對(duì)應(yīng)的ttyp2(s2)端口上。當(dāng)telnet從遠(yuǎn)端獲取了一個(gè)字符時(shí),該字符就會(huì)通過(guò)m2、s2傳遞給 getty程序,而getty程序就會(huì)通過(guò)s2、m2和telnet程序往網(wǎng)絡(luò)上返回”login:”字符串信息。這樣,登錄程序與telnet程序就通過(guò)“偽終端”進(jìn)行通信。通過(guò)使用適當(dāng)?shù)能浖涂梢园褍蓚€(gè)甚至多個(gè)偽終端設(shè)備連接到同一個(gè)物理串行端口上。

            在使用設(shè)備文件系統(tǒng) (device filesystem)之前,為了得到大量的偽終端設(shè)備特殊文件,使用了比較復(fù)雜的文件名命名方式。因?yàn)橹淮嬖?6個(gè)ttyp(ttyp0—ttypf) 的設(shè)備文件,為了得到更多的邏輯設(shè)備對(duì),就使用了象q、r、s等字符來(lái)代替p。例如,ttys8和ptys8就是一個(gè)偽終端設(shè)備對(duì)。不過(guò)這種命名方式目前仍然在RedHat等Linux系統(tǒng)中使用著。

            但Linux系統(tǒng)上的Unix98并不使用上述方法,而使用了”pty master”方式,例如/dev/ptm3。它的對(duì)應(yīng)端則會(huì)被自動(dòng)地創(chuàng)建成/dev/pts/3。這樣就可以在需要時(shí)提供一個(gè)pty偽終端。目錄 /dev/pts是一個(gè)類型為devpts的文件系統(tǒng),并且可以在被加載文件系統(tǒng)列表中看到。雖然“文件”/dev/pts/3看上去是設(shè)備文件系統(tǒng)中的一項(xiàng),但其實(shí)它完全是一種不同的文件系統(tǒng)。
            即: TELNET ---> TTYP3(S3: slave) ---> PTYP3(M3: master) ---> GETTY
            =========================================================================
            實(shí)驗(yàn):
            1、在X下打開(kāi)一個(gè)或N個(gè)終端窗口
            2、#ls /dev/pt*
            3、關(guān)閉這個(gè)X下的終端窗口,再次運(yùn)行;比較兩次輸出信息就明白了。
            在RHEL4環(huán)境下: 輸出為/dev/ptmx /dev/pts/1存在一(master)對(duì)多(slave)的情況
            =========================================================================


            3、控制終端(/dev/tty)
            如果當(dāng)前進(jìn)程有控制終端(Controlling Terminal)的話,那么/dev/tty就是當(dāng)前進(jìn)程的控制終端的設(shè)備特殊文件。可以使用命令”ps –ax”來(lái)查看進(jìn)程與哪個(gè)控制終端相連。對(duì)于你登錄的shell,/dev/tty就是你使用的終端,設(shè)備號(hào)是(5,0)。使用命令”tty”可以查看它具體對(duì)應(yīng)哪個(gè)實(shí)際終端設(shè)備。/dev/tty有些類似于到實(shí)際所使用終端設(shè)備的一個(gè)聯(lián)接。


            4、控制臺(tái)終端(/dev/ttyn, /dev/console)
            在Linux 系統(tǒng)中,計(jì)算機(jī)顯示器通常被稱為控制臺(tái)終端 (Console)。它仿真了類型為L(zhǎng)inux的一種終端(TERM=Linux),并且有一些設(shè)備特殊文件與之相關(guān)聯(lián):tty0、tty1、tty2 等。當(dāng)你在控制臺(tái)上登錄時(shí),使用的是tty1。使用Alt+[F1—F6]組合鍵時(shí),我們就可以切換到tty2、tty3等上面去。tty1–tty6等稱為虛擬終端,而tty0則是當(dāng)前所使用虛擬終端的一個(gè)別名,系統(tǒng)所產(chǎn)生的信息會(huì)發(fā)送到該終端上。因此不管當(dāng)前正在使用哪個(gè)虛擬終端,系統(tǒng)信息都會(huì)發(fā)送到控制臺(tái)終端上。你可以登錄到不同的虛擬終端上去,因而可以讓系統(tǒng)同時(shí)有幾個(gè)不同的會(huì)話期存在。只有系統(tǒng)或超級(jí)用戶root可以向 /dev/tty0進(jìn)行寫操作 即下例:
            1、# tty(查看當(dāng)前TTY)
            /dev/tty1
            2、#echo "test tty0" > /dev/tty0
            test tty0


            5 虛擬終端(/dev/pts/n)
            在Xwindows模式下的偽終端.


            6 其它類型
            Linux系統(tǒng)中還針對(duì)很多不同的字符設(shè)備存在有很多其它種類的終端設(shè)備特殊文件。例如針對(duì)ISDN設(shè)備的/dev/ttyIn終端設(shè)備等。這里不再贅述。


            FAQ: 終端和控制臺(tái)

            RROM:http://blog.footoo.org/?p=73
            Posted on Tuesday, November 28th, 2006 by CLIFF

            吳晉 (cliffwoo@gmail.com)
            FoOTOo OpenSource Lab

            由于在很多朋友對(duì)終端的概念一直不是很清楚,因此寫了這個(gè)FAQ,希望能夠幫助大家理解這些概念。不妥之處,還請(qǐng)大家來(lái)信指出。

            Q:/dev/console 是什么?

            A:/dev/console即控制臺(tái),是與操作系統(tǒng)交互的設(shè)備,系統(tǒng)將一些信息直接輸出到控制臺(tái)上。目前只有在單用戶模式下,才允許用戶登錄控制臺(tái)。


            Q:/dev/tty是什么?

            A:tty設(shè)備包括虛擬控制臺(tái),串口以及偽終端設(shè)備。
            /dev/tty代表當(dāng)前tty設(shè)備,在當(dāng)前的終端中輸入 echo “hello” > /dev/tty ,都會(huì)直接顯示在當(dāng)前的終端中。


            Q:/dev/ttyS*是什么?

            A:/dev/ttyS*是串行終端設(shè)備。


            Q:/dev/pty*是什么?

            A:/dev/pty*即偽終端,所謂偽終端是邏輯上的終端設(shè)備,多用于模擬終端程序。例如,我們?cè)赬 Window下打開(kāi)的終端,以及我們?cè)赪indows使用telnet 或ssh等方式登錄Linux主機(jī),此時(shí)均在使用pty設(shè)備(準(zhǔn)確的說(shuō)應(yīng)該pty從設(shè)備)。

            Q:/dev/tty0與/dev/tty1 …/dev/tty63是什么?它們之間有什么區(qū)別?

            A:/dev/tty0代表當(dāng)前虛擬控制臺(tái),而/dev/tty1等代表第一個(gè)虛擬控制臺(tái),例如當(dāng)使用ALT+F2進(jìn)行切換時(shí),系統(tǒng)的虛擬控制臺(tái)為/dev/tty2 ,當(dāng)前的控制臺(tái)則指向/dev/tty2

            Q:如何確定當(dāng)前所在的終端(或控制臺(tái))?

            A:使用tty命令可以確定當(dāng)前的終端或者控制臺(tái)。

            Q:/dev/console是到/dev/tty0的符號(hào)鏈接嗎?

            A: 目前的大多數(shù)文本中都稱/dev/console是到/dev/tty0的鏈接(包括《Linux內(nèi)核源代碼情景分析》),但是這樣說(shuō)是不確切的。根據(jù)內(nèi)核文檔,在2.1.71之前,/dev/console根據(jù)不同系統(tǒng)的設(shè)定可以鏈接到/dev/tty0或者其他tty*上,在2.1.71版本之后則完全由內(nèi)核控制。目前,只有在單用戶模式下可以登錄/dev/console(可以在單用戶模式下輸入tty命令進(jìn)行確認(rèn))。

            Q:/dev/tty0與/dev/fb*有什么區(qū)別?

            A: 在Framebuffer設(shè)備沒(méi)有啟用的系統(tǒng)中,可以使用/dev/tty0訪問(wèn)顯卡。

            Q:關(guān)于終端和控制臺(tái)的區(qū)別可以參考哪些文本

            A: 可以參考內(nèi)核文檔中的 Documents/devices.txt 中關(guān)于”TERMINAL DEVICES” 的章節(jié)。另外,《Linux內(nèi)核源代碼情景分析》的8.7節(jié) 以及《Operating Systems : Design and Implementation》中的3.9節(jié)(第3版中為3.8節(jié))都對(duì)終端設(shè)備的概念和歷史做了很好的介紹。另外在《Modern Operating system》中也有對(duì)終端設(shè)備的介紹,由于與《Operating Systems : Design and Implementation》的作者相同,所以文本內(nèi)容也大致相同。需要注意的一點(diǎn)是《Operating Systems : Design and Implementation》中將終端設(shè)備分為3類,而《Modern Operating system》將終端硬件設(shè)備分為2類,差別在于前者將 X Terminal作為一個(gè)類別。

            PS:
               
            只有2410的2.6才叫ttySAC0,9200等的還是叫ttyS0

            轉(zhuǎn)自:
            http://hi.baidu.com/mypleasure/blog/item/9cc95360ce0923da8cb10dfb.html

            posted on 2009-12-07 23:01 chatler 閱讀(247) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux_Coding
            <2009年5月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺(jué)這個(gè)博客還是不錯(cuò),雖然做的東西和我不大相關(guān),覺(jué)得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            AV无码久久久久不卡网站下载 | 久久99免费视频| 久久91精品国产91| 色8激情欧美成人久久综合电| 四虎国产永久免费久久| 久久精品9988| 久久综合九色综合97_久久久| 狠狠狠色丁香婷婷综合久久五月| 久久亚洲AV成人无码电影| 国产成人无码精品久久久性色| 久久精品国产男包| 久久精品卫校国产小美女| 久久久久久久波多野结衣高潮| 性高湖久久久久久久久AAAAA| 开心久久婷婷综合中文字幕| 欧美精品福利视频一区二区三区久久久精品 | 久久精品国产一区二区电影| 国产ww久久久久久久久久| 夜夜亚洲天天久久| 久久久久久国产精品美女| 亚洲国产成人久久一区久久| 老男人久久青草av高清| 亚洲中文久久精品无码| 国产精品久久久久国产A级| 99久久精品免费看国产免费| 久久久久亚洲AV无码专区桃色| 免费精品久久久久久中文字幕| 午夜精品久久久久久影视riav| 蜜臀av性久久久久蜜臀aⅴ| 久久99精品国产| 午夜精品久久久久9999高清| 伊人久久大香线蕉av一区| 国产精品福利一区二区久久| 精品99久久aaa一级毛片| 国产精品亚洲综合久久| 精品久久久久久中文字幕人妻最新| 久久99久久99小草精品免视看| 欧洲性大片xxxxx久久久| 久久久亚洲欧洲日产国码aⅴ | 色综合久久久久综合99| 久久久久国产精品人妻|