pty และ tty หมายถึงอะไร


237

ฉันสังเกตเห็นว่ามีหลายคนกล่าวถึงptyและttyในโครงการโอเพนซอร์สบางคนสามารถบอกฉันได้ว่าพวกเขาหมายถึงอะไรและอะไรคือความแตกต่างระหว่างพวกเขา ขอบคุณ!

คำตอบ:


225

"tty" เดิมหมายถึง "teletype" และ "pty" หมายถึง "pseudo-teletype"

ใน UNIX / dev / tty * เป็นอุปกรณ์ใด ๆ ที่ทำหน้าที่เหมือน "โทรพิมพ์" เช่นเทอร์มินัล (เรียกว่าโทรพิมพ์เพราะนั่นคือสิ่งที่เรามีให้กับอาคารผู้โดยสารในวันที่ตื่นตาเหล่านั้น)

pty คือ pseudotty รายการอุปกรณ์ที่ทำหน้าที่เหมือนเทอร์มินัลไปยังกระบวนการอ่านและเขียนที่นั่น แต่จัดการโดยอย่างอื่น พวกเขาปรากฏตัวครั้งแรก (ตามที่ฉันจำได้) สำหรับ X Window และหน้าจอและอื่น ๆ ที่คุณต้องการบางสิ่งที่ทำหน้าที่เหมือนเทอร์มินัล แต่สามารถใช้งานได้จากโปรแกรมอื่น


ฉันคิดว่า ptys ที่เพิ่มไปยัง Unix เป็นหลักเพื่อสนับสนุน Telnet, rsh และ rlogin
Fred Foo

5
@CharlieMartin คุณหมายความว่า pty คืออะไร "ที่ทำหน้าที่เหมือนเทอร์มินัล" ทำไมเราต้องการบางสิ่งเช่นนั้น และโปรแกรมอื่นใช้ประโยชน์จาก pty นี้อย่างไร? ฉันเดาว่า pty relays คำสั่งหรือบางสิ่งบางอย่างเพื่อ for-real terminal (tty) สำหรับโปรแกรม ถูกต้องหรือไม่ ถ้าไม่เพิกเฉยต่อการเดาของฉันและโปรดตอบส่วนแรกของความคิดเห็นของฉัน
OKGimmeMoney

16
คิดว่าเทอร์มินัลเป็นวัตถุ: มันเชื่อมต่อบางอย่างที่ปลายด้านหนึ่งเพื่อ stdin และ stdout ที่ปลายอีกด้านหนึ่ง TTY จริงเชื่อมต่อกับเทอร์มินัลฟิสิคัล PTY เชื่อมต่อกับโปรแกรมเช่น xterm หรือหน้าต่างคำสั่งหรือหน้าต่างเชลล์ จากนั้นจะอยู่ที่โปรแกรมและบอกว่ามันเป็นเทอร์มินัลจริงๆ PTY ก่อนหน้านี้คุณเชื่อมต่อโปรแกรมเช่นนี้กับไพพ์ แต่ไพพ์มีความแตกต่างอย่างมากเช่นไม่มีโฟลว์คอนโทรล PTY ดูเหมือนจะแก้ปัญหานี้
Charlie Martin

3
@CharlieMartin "TTY ตัวจริงเชื่อมต่อกับสถานีปลายทาง" แล้ว Linux Console ล่ะ? ยกตัวอย่างเช่นในระบบอูบุนตูมีลินุกซ์บนคอนโซลและพวกเขาจะเชื่อมต่อกับCtrl-Alt-F{1..6} /dev/tty{1..6}Linux Console ไม่ใช่เทอร์มินัลทางกายภาพ แต่เชื่อมต่อกับttyN(ไม่ใช่ไปยัง a ptyN) ฉันทำอะไรบางอย่างหายไปหรือเปล่า
Utku

1
มีเพียงคุณเท่านั้นที่ไม่สามารถพูดอะไรที่ชัดเจนเกี่ยวกับลินุกซ์ที่ไม่มีตัวเรือนแบบแปลก ๆ ในกรณีนี้คอนโซล Linux เป็นคุณลักษณะเคอร์เนลที่ใช้รายการ / dev / tty dev แต่จากนั้นเชื่อมต่อกับสิ่งต่างๆมากมายเพื่อออกไปยังผู้ใช้ en.wikipedia.org/wiki/Linux_console
Charlie Martin

234

tty คือเทอร์มินัล (ย่อมาจากteletype - เทอร์มินัลดั้งเดิมใช้เครื่องพิมพ์บรรทัดสำหรับเอาต์พุตและคีย์บอร์ดสำหรับอินพุต!) เทอร์มินัลนั้นเป็นเพียงอุปกรณ์ส่วนติดต่อผู้ใช้ที่ใช้ข้อความสำหรับอินพุตและเอาต์พุต

pty เป็นเทอร์มินัลหลอก - เป็นการใช้งานซอฟต์แวร์ที่ปรากฏขึ้นกับโปรแกรมที่แนบมาเช่นเทอร์มินัล แต่แทนที่จะสื่อสารโดยตรงกับเทอร์มินัล "ของจริง" มันจะโอนอินพุตและเอาต์พุตไปยังโปรแกรมอื่น

ตัวอย่างเช่นเมื่อคุณ ssh ในเครื่องและเรียกใช้lsที่lsคำสั่งจะส่งผลลัพธ์ที่ได้จะหลอกขั้วด้านอื่น ๆ ของซึ่งอยู่ติดกับภูตจุ๊


1
คุณช่วยยกตัวอย่าง PTY ที่ "แม่นยำ" หน่อยได้ไหม? ฉันยังไม่เข้าใจว่าพวกเขาเข้ามาได้อย่างไรและพวกเขาถูกเรียกอย่างไร ขอบคุณ
user3085931

ใครบางคนสามารถช่วยใน*nixระบบปฏิบัติการที่ใช้เวลาและวิธีสร้างเทอร์มินัลหลอกนี้
กฤษณะ Oza

@darth_coder: สร้างขึ้นเมื่อแอปพลิเคชันร้องขอ ที่เกิดขึ้นเมื่อคุณทำสิ่งต่าง ๆ เช่นเปิดหน้าต่างเทอร์มินัลกราฟิกใหม่หรือล็อกอินจากระยะไกล
caf

@caf คุณสามารถตั้งชื่อโมดูลเคอร์เนลหรือ daemon ที่รับผิดชอบในการวางไข่เทอร์มินัล
กฤษณะ Oza

@darth_coder: แอปพลิเคชันใด ๆ สามารถทำได้ sshdและxtermเป็นสองตัวอย่างทั่วไป
คาเฟ่

21

tty: โทรพิมพ์ มักจะอ้างถึงพอร์ตอนุกรมของคอมพิวเตอร์ซึ่งต่อกับขั้ว

pty: pseudoteletype เคอร์เนลมีพอร์ต pseudoserial ที่เชื่อมต่อกับโปรแกรมจำลองเทอร์มินัลเช่น xterm หรือหน้าจอ


19

หากคุณรันคำสั่ง mount โดยไม่มีอาร์กิวเมนต์บรรทัดคำสั่งซึ่งแสดงระบบไฟล์ที่เมาท์บนระบบของคุณคุณจะสังเกตเห็นบรรทัดที่มีลักษณะดังนี้: none on / dev / pts type devpts (rw, gid = 5, mode = 620) สิ่งนี้บ่งชี้ว่าระบบไฟล์ชนิดพิเศษ, devpts, ถูกเมาท์ที่ / dev / pts. ระบบไฟล์นี้ซึ่งไม่ได้เชื่อมโยงกับอุปกรณ์ฮาร์ดแวร์ใด ๆ , เป็นระบบไฟล์ "เวทมนต์" ที่สร้างขึ้นโดย เคอร์เนล Linux มันคล้ายกับระบบไฟล์ / proc

เช่นเดียวกับไดเร็กทอรี / dev / dev / pts มีรายการที่สอดคล้องกับอุปกรณ์ แต่แตกต่างจาก / dev ซึ่งเป็นไดเรกทอรีสามัญ / dev / pts เป็นไดเรกทอรีพิเศษที่สร้างขึ้นแบบไดนามิกโดยเคอร์เนล Linux เนื้อหาของไดเรกทอรีจะแตกต่างกันไปตามเวลาและสะท้อนสถานะของระบบที่กำลังทำงานอยู่ รายการใน / dev / pts สอดคล้องกับเทอร์มินัลหลอก (หรือ pseudo-TTYs หรือ PTYs)

Linux สร้าง PTY สำหรับทุกหน้าต่างเทอร์มินัลใหม่ที่คุณเปิดและแสดงรายการที่ถูกต้องใน / dev / pts อุปกรณ์ PTY ทำหน้าที่เหมือนอุปกรณ์เทอร์มินัล - มันรับอินพุตจากแป้นพิมพ์และแสดงข้อความจากโปรแกรมที่ทำงานอยู่ในนั้น . PTYs ถูกกำหนดหมายเลขและหมายเลข PTY เป็นชื่อของรายการที่สอดคล้องกันใน / dev / pts

ตัวอย่างเช่นถ้าหมายเลข PTY ของหน้าต่างเทอร์มินัลใหม่คือ 7 ให้เรียกใช้คำสั่งนี้จากหน้าต่างอื่น:% echo 'ฉันเป็นเสมือน di'> / dev / pts / 7 เอาต์พุตปรากฏขึ้นในหน้าต่างเทอร์มินัลใหม่


2

ttyเป็นทางกายภาพ เสื้อ erminal- เสื้อ élet Yพอร์ต PE บนคอมพิวเตอร์ (มักจะเป็นพอร์ตอนุกรม)

คำว่าโทรพิมพ์เป็นคำย่อของเครื่องพิมพ์ดีดโทรเลขหรืออุปกรณ์โทรพิมพ์จากยุค 30 ซึ่งเป็นอุปกรณ์แม่เหล็กไฟฟ้าที่ใช้แทนเครื่องเข้ารหัสโทรเลขในยุค 1830 และ 1840

เครื่องโทรพิมพ์
TTY - Teletypewriter 1930s

ptyเป็นพี seudo- ทีเอเลTY PE พอร์ตให้บริการโดยเครื่องคอมพิวเตอร์ระบบปฏิบัติการเคอร์เนลกับโปรแกรมซอฟแวร์การเชื่อมต่อการลอกเลียนแบบขั้วเช่น SSH, xterm หรือหน้าจอ

ป้อนคำอธิบายรูปภาพที่นี่
PTY - PseudoTeletype

เทอร์มินัลเป็นเพียงส่วนติดต่อผู้ใช้ของคอมพิวเตอร์ที่ใช้ข้อความสำหรับอินพุตและเอาต์พุต


การใช้งานระบบปฏิบัติการ

เหล่านี้ใช้พี seudo- ทีเอเลTYพอร์ต PE แต่การตั้งชื่อและการใช้งานของพวกเขาได้แยกออกมาเล็ก ๆ น้อย ๆ

ลินุกซ์เมาท์พิเศษระบบไฟล์devptsบน/ dev (ที่ s 'คงจะยืนs erial) ที่สร้างรายการที่สอดคล้องกันใน/dev/ptsสำหรับหน้าต่าง terminal ทุกใหม่ที่คุณเปิดเช่น/dev/pts/0


macOS / FreeBSDยังใช้โครงสร้างไฟล์/ devด้วยเช่นกันพวกมันใช้หลักการTTYตั้งชื่อแบบตัวเลขttysสำหรับทุกหน้าต่างเทอร์มินัลใหม่ที่คุณเปิดเช่น/dev/ttys002


Microsoft WindowsยังคงมีแนวคิดของLPTพอร์ตสำหรับ Line Printer Terminals ภายใน Command Shell เพื่อส่งออกไปยังเครื่องพิมพ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.