Linux中的tty、pts、pty等概念辨析

Linux中的tty、pts、pty等概念辨析

基本概念

tty、pty、pts、ptmx

  • tty(終端設備的統稱):tty一詞源于Teletypes,或teletypewriters,原來指的是電傳打字機,是通過串行線用打印機鍵盤通過閱讀和發送信息的東西,后來這東西被鍵盤和顯示器取代,所以現在叫終端比較合適。終端是一種字符型設備,他有多種類型,通常使用tty來簡稱各種類型的終端設備。
  • pty(虛擬終端)
    但是假如我們遠程telnet到主機或使用xterm時不也需要一個終端交互么?是的,這就是虛擬終端pty(pseudo-tty)
  • pts/ptmx(pts/ptmx結合使用,進而實現pty)
    pts(pseudo-terminal slave)是pty的實現方法,和ptmx(pseudo-terminal master)配合使用實現pty。

tty[n]和ttyS[n]

  • tty[n] 一般是和物理的控制臺或物理的終端設備相聯系。例如在linux下tty1-6是控制臺下的六個虛擬終端,控制臺是指直接聯系到主機的顯示器+鍵盤/鼠標。通常我們在linux下看到的控制臺(console)是由幾個設備完成的。分別是/dev/tty[N](其中tty0就是/dev/console,而tty1tty2就是不同的虛擬終端(virtual console)).通常使用熱鍵Alt+F[n](如Alt+F2)來在這些虛擬終端之間進行切換。所有的這些tty設備都是由linux/drivers/char/console.cvt.c對應。

  • ttyS[n] 是串行端口終端(Serial PortTerminal)是使用電腦串行端口連接的終端設備。電腦把每個串行端口都看作是個字符設備。有段時間這些串行端口設備通常被稱為終端設備,因為那時他的最大用途就是用來連接終端。ttyS1和ttyS2是第一個和第二個串口終端,即通過串行口連接的終端設備。但實際上今天真正的串行終端硬件幾乎見不到了,通常可以用windows下的超級終端程序和linux下的minicom這樣的模擬終端程序來模擬它。甚至ttyUSB0這樣的USB-串口轉換器的模擬串口也出現了。所以tty現在也不全是物理的設備了。

使用pty這樣的虛擬終端設備的主要有兩種:一種是由Xwindow下的模擬終端程序使用的,另一種就是通過網絡遠程登錄上去的終端模擬程序使用的,如putty,SecuCRT之類。甚至你從一臺主機的控制臺tty1上用telnet/ssh登錄了另一臺聯網主機,對于被連接的主機,你使用的仍然是一臺pty——虛擬終端。

總而言之,物理和虛擬的區分已經越來越模糊了,沒必要那么較真。Unix的設計的哲學就是“一切皆文件”,在使用上沒什么分別。像在PLAN9這樣的概念OS中,連網絡服務也都是文件了,更加的大一統了,其實不是挺好的嗎?

/dev/pty、/dev/tty[n]、/dev/console、/dev/pts/[n]、/dev/ptmx

第一個用戶登陸,console的設備文件為/dev/pts/0,第二個為/dev/pts/1,以此類推。這里的0、1、2、3不是具體的標準輸入或輸出,而是整個控制臺。你可嘗試 echo "aaaaaa" > /dev/pts0,這個在后面的實驗部分會展示。

  • /dev/tty
    當前控制終端。/dev/tty 指的是當前所處的終端,輸出到此的內容只會顯示在當前工作的終端顯示器上;可以使用命令ps –ax來查看進程與哪個控制終端相連。對于你登錄的shell,/dev/tty就是你使用的終端,設備號是(5,0)。使用命令tty可以查看自己具體對應哪個實際終端設備。/dev/tty有些類似于到實際所使用終端設備的一個聯接。

  • /dev/console 和 /dev/tty[n]
    控制臺終端-系統控制臺 。在Linux系統中,計算機顯示器通常被稱為控制臺終端(Console)。它仿真了類型為Linux的一種終端(TERM=Linux),并且有一些設備特殊文件與之相關聯:tty0、tty1、tty2等.當你在控制臺上登錄時,使用的是tty1。使用Alt+[F1—F6]組合鍵時,我們就可以切換到tty2、tty3等上面去.tty1–tty6等稱為虛擬終端,而tty0則是當前所使用虛擬終端的一個別名,即/dev/console就是tty0。系統所產生的信息會發送到該終端上。因此不管當前正在使用哪個虛擬終端,系統信息都會發送到控制臺終端上。你可以登錄到不同的虛擬終端上去,因而可以讓系統同時有幾個不同的會話期存在.只有系統或超級用戶root可以向/dev/tty0進行寫操作。

  • /dev/pts/[n] 和 /dev/ptmx

    文件/dev/ptmx是一個字符文件,主數字為5,次數字為2,通常為模式0666,所有者組為root.root。它用于創建偽終端主對和從對。

    當進程打開/dev/ptmx時,它將獲得偽終端主設備(PTM)的文件描述符,并在/dev/pts目錄中創建偽終端從設備(PTS)。通過打開/dev/ptmx獲得的每個文件描述符都是一個獨立的PTM,具有自己的關聯PTS,可以通過將文件描述符傳遞給ptsname找到其路徑。

    /dev/pts/[n] 是遠程登陸(telnet,ssh等)后創建的控制臺設備文件所在的目錄。由于可能有好幾千個用戶登陸,所以/dev/pts其實是動態生成的,不像其他設備文件是構建系統時就已經產生的硬盤節點(如果未使用devfs)。

/dev/tty[n]的偽終端跟/dev/pts/[n]的偽終端有什么區別?為什么/dev/tty[n]可以代表偽終端的情況下,還要分出/dev/pts/[n]的偽終端呢?邏輯上它們都是終端設備,屬于字符設備的一種,說到不同多半是歷史原因形成的,其實也沒什么大不了的區別。

實驗

tty命令,可通過手冊查到:

tty - print the file name of the terminal connected to standard input

即打印連接到標準輸入的終端的文件名。

我們在某臺機器下打開一個終端,并執行ls /dev/pt* 來查看設備目錄下的文件:

在這里插入圖片描述

這時,我們再新開一個終端,并再次執行ls /dev/pt*和在新終端下執行tty

在這里插入圖片描述

很明顯,我們每次新開一個終端,就會在/dev/pts目錄下新生成一個設備文件,比如這次我們新生成的就是文件2。當前終端的編號可以通過tty命令來查看。我們甚至可以在它們之間進行交互,比如我們知道新打開的終端編號為2,那我們可以在原終端上向它輸出信息:

echo "hello" > /dev/pts/2

這時,在新打開的終端/dev/pts/2上,我們可以看到:

在這里插入圖片描述

Ref:

https://www.cnblogs.com/zengkefu/p/5558851.html

http://blog.chinaunix.net/uid-17008081-id-2838360.html

https://www.cnblogs.com/zengkefu/p/5558840.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532736.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532736.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532736.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(2021) 25 [持久化] 文件系統實現:FAT和UNIX文件系統

(2021) 25 [持久化] 文件系統實現:FAT和UNIX文件系統 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1HN41197Ko?p25 講義:http://jyywiki.cn/OS/2021/slides/15.slides#/ 背景 回顧 應用眼中的文件…

用計算機模擬地球誕生,計算機模擬顯示早期金星或像地球一樣宜居

雖然金星的綽號是“地球的邪惡孿生化身”,但它和地球上的一切都不同:灼熱、干燥并且被有毒煙云籠罩。不過,就在10億或20億年前,這兩個任性的“兄弟”可能更加相似。最新的計算機模擬顯示,早期的金星看上去和地球很像&a…

海南大學計算機原理,海南大學微機原理課件 第一章 計算機基礎知識

第一章計算機基礎知識數 制1.1一.計算機使用的數制及其相互轉換 十進制(D)、二進制(B)、八進制(O)和十六進制(H). 數制中用少量數碼按次序排列成數位,并按由低到高的進位方式進行計 數。(數碼的個數稱為基數) D---0,1,2,3,4,5,6,7,8,9------數碼十個(基為10)-------…

Linux中的二進制可執行文件和腳本可執行文件及Shebang

Linux中的二進制可執行文件和腳本可執行文件及Shebang 二進制可執行文件 我們知道&#xff0c;一個C程序經過預處理、編譯、匯編、鏈接就會得到一個二進制可執行文件&#xff0c;這種文件在Linux中叫做ELF文件。比如我們有一個C源代碼hello.c&#xff1a; #include <stdi…

pe能用的固態硬盤測試軟件,通用pe工具箱教你如何讓硬盤4K對齊

昨天小編教大家如何查看電腦硬盤是否4K對齊&#xff0c;馬上就有讀者告訴小編&#xff0c;查看電腦硬盤是否4K對齊的方法學到了&#xff0c;那么我使用的固態硬盤如何做到4K對齊呢&#xff1f;問的好啊&#xff01;現如今用戶對電腦硬件的要求是越來越高。很多用戶都不僅僅滿足…

[2020-ECCV]PIPAL-a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration論文簡析

[2020-ECCV] PIPAL: a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration 論文簡析 論文&#xff1a;https://arxiv.org/abs/2007.12142 代碼及數據集&#xff1a;https://github.com/HaomingCai/PIPAL-dataset 概述 本文認為隨著圖像重建&…

郫都區計算機老師周俊老師,教師節,帶你走進郫都教師背后的故事

點擊“郫都教育”關注我們&#xff1a;)有這樣一群人“師者&#xff0c;所以傳道&#xff0c;授業&#xff0c;解惑也”是他們奉獻一生的事業“隨風潛入夜&#xff0c;潤物細無聲”是他們培養英才的責任“春蠶到死絲方盡&#xff0c;蠟炬成灰淚始干”是他們追求終生的信仰值此第…

(2021) 18 [代碼講解] 可執行文件

(2021) 18 [代碼講解] 可執行文件 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻&#xff1a;https://www.bilibili.com/video/BV1HN41197Ko?p18 講義&#xff1a;http://jyywiki.cn/OS/2021/slides/C8.slides#/ 背景 回顧 程序 狀態機 狀態機執行 狀態機上的路徑狀…

如何學習計算機思維,劉康平:為什么我們每個人都應該學習計算思維?

不久前&#xff0c;微軟亞洲研究院資深學術合作經理劉康平應邀在“造就”做了演講&#xff0c;以下為演講節選&#xff0c;由“造就”授權轉載。劉康平 微軟亞洲研究院資深學術合作經理以中國象棋為例&#xff0c;在這樣一個棋局上&#xff0c;你怎么用最快的方式找到「將」和「…

鏈接與加載-NJU-JYY

(2021) 19 [代碼講解] 從零實現動態加載 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻&#xff1a;https://www.bilibili.com/video/BV1N741177F5?p15 講義&#xff1a;http://jyywiki.cn/OS/2021/slides/C9.slides#/ 背景 回顧&#xff1a; ELF可執行文件 只要能完成…

計算機械功的公式,機械功率計算公式

初中物理公式物理量(單位) 公式 備注 公式的變形速度V(m/S) v S /t (S:&#xff1a;路程&#xff1b; t&#xff1a;:時間 )重力G(N) Gmg (m&#xff1a;質量&#xff1b;g&#xff1a;9.8N/kg或者10N/kg)密度ρ(kg/m3) ρ m&#xff1a;質量/V&#xff1a;體積 (m&#xff1a;…

饑荒聯機自建服務器有什么用,聯機版饑荒使用專用服務器的好處 | 手游網游頁游攻略大全...

發布時間&#xff1a;2016-02-15存檔保存位置是?很多玩家對此并不是很了解,不過別著急喲,下面99單機小編就為你帶來高玩分享的相關技巧心得攻略,希望大家能喜歡. 聯機版的存檔與單機版是不同的,由于聯機版饑荒建 ...標簽&#xff1a;游戲資訊 攻略秘籍發布時間&#xff1a;201…

(2021) 26 [持久化] 持久數據的可靠性:RAID和journaling

(2021) 26 [持久化] 持久數據的可靠性&#xff1a;RAID和journaling 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻&#xff1a;https://www.bilibili.com/video/BV1HN41197Ko?p26 講義&#xff1a;http://jyywiki.cn/OS/2021/slides/16.slides#/ 背景 回顧 文件系統 …

計算機-p命令,OD(電腦命令)_百度百科

od 命令用途是以指定格式顯示文件。常見的文件為文本文件和二進制文件。此命令主要用來查看保存在二進制文件中的值。比如&#xff0c;程序可能輸出大量的數據記錄&#xff0c;每個數據是一個單精度浮點數。這些數據記錄存放在一個文件中&#xff0c;如果想查看下這個數據&…

Linux下編譯、鏈接、加載運行C++ OpenCV的兩種方式及常見問題的解決

Linux下編譯、鏈接、加載運行C OpenCV的兩種方式及常見問題的解決 在Linux下安裝完OpenCV C之后&#xff08;還沒有安裝的讀者請參考Ubuntu 18.04 安裝OpenCV C&#xff09;&#xff0c;本文將探索Linux下編譯、鏈接C OpenCV的兩種方式&#xff0c;并且給出筆者在初次嘗試時遇…

win10無法檢驗服務器出示的ssl證書,win10系統網站啟用ssL安全證書的操作方法

win10系統網站啟用ssL安全證書的操作方法?很多win10用戶在使用電腦的時候&#xff0c;會發現win10系統網站啟用ssL安全證書的的現象&#xff0c;根據小編的調查并不是所有的朋友都知道win10系統網站啟用ssL安全證書的的問題怎么解決&#xff0c;不會的朋友也不用擔心&#xff…

Linux下構建自己的C++共享庫并配合pkg-config生成鏈接選項

Linux下構建自己的C共享庫并配合pkg-config生成鏈接選項 本文將以C鏈表的新建、打印操作為例構建自己的共享庫&#xff0c;并在實際調試代碼時嘗試使用。我們在做數據結構題時經常需要將鏈表打印出來看一下結果&#xff0c;但是并沒有一種庫函數可以讓我們直接調用來打印自己的…

webkitlineclamp css3,-webkit-line-clamp

無標題文檔static&#xff1a;對象遵循常規流。top&#xff0c;right&#xff0c;bottom&#xff0c;left等屬性不會被應用。 relative&#xff1a; 對象遵循常規流&#xff0c;并且參照自身在常規流中的位置通過top&#xff0c;right&#xff0c;bottom&#xff0c;left屬性進…

Linux內核初探

Linux內核初探 內核的組成部分 kernel&#xff1a;內核核心文件&#xff0c;一般為bzp_w_picpath&#xff0c;經過壓縮處理的鏡像文件&#xff1b;通常內核核心文件保存在/boot/目錄下&#xff0c;名稱為vmlinuz-version-release kernel object(ko)&#xff1a;內核對象&…

Nplayer本地文件拷到服務器,手把手教你簡易NAS構建,手機/平板/智能電視隨意調取,家庭存儲云共享,有了自己的網絡云盤后再也不用擔心容量不夠了!...

之前嫌鍵盤俠煩&#xff0c;寫這些也沒意義所以把賬號注銷了文章刪除了&#xff0c;現在想了想我抗吧12級老蛆還噴不過這幫小兔崽子&#xff1f;換了skt.ruo穢土轉生&#xff0c;求噴子和我在各評論對線。特別是匿名dog見一個懟死一個。下面是之前號寫的內容原文 -#簡介NAS全稱…