Pty và tty có nghĩa là gì?


236

Tôi nhận thấy có rất nhiều đề cập đến ptyttytrong một số dự án mã nguồn mở, ai đó có thể cho tôi biết ý nghĩa của chúng và sự khác biệt giữa chúng là gì không? Cảm ơn!

Câu trả lời:


224

"Tty" ban đầu có nghĩa là "teletype" và "pty" có nghĩa là "giả-teletype".

Trong UNIX, / dev / tty * là bất kỳ thiết bị nào hoạt động như một "teletype", tức là một thiết bị đầu cuối. (Được gọi là teletype vì đó là những gì chúng ta có cho các thiết bị đầu cuối trong những ngày không lành mạnh này.)

Một pty là một giả, một mục thiết bị hoạt động như một thiết bị đầu cuối cho quá trình đọc và viết ở đó, nhưng được quản lý bởi một cái gì đó khác. Chúng lần đầu tiên xuất hiện (như tôi nhớ lại) cho X Window và màn hình và tương tự, nơi bạn cần thứ gì đó hoạt động như một thiết bị đầu cuối nhưng có thể được sử dụng từ một chương trình khác.


Tôi nghĩ rằng ptys được thêm vào Unix chủ yếu để hỗ trợ Telnet, rsh và rlogin.
Fred Foo

5
@CharlieMartin Ý bạn là gì pty là một cái gì đó "hoạt động như một thiết bị đầu cuối?" Tại sao chúng ta lại muốn một cái gì đó như thế? Và làm thế nào để một chương trình khác sử dụng pty này? Tôi đoán là các lệnh chuyển tiếp pty hoặc một cái gì đó đến thiết bị đầu cuối thực (tty) cho chương trình. Điều này có đúng không? Nếu không, bỏ qua dự đoán của tôi và xin vui lòng trả lời phần đầu tiên của bình luận của tôi.
OKGimmeMoney

16
Hãy nghĩ về một thiết bị đầu cuối như một đối tượng: nó kết nối một cái gì đó ở một đầu với stdin và stdout ở đầu kia. Một TTY thực sự kết nối với một thiết bị đầu cuối vật lý. một PTY kết nối với một chương trình, ví dụ: xterm hoặc cửa sổ lệnh hoặc cửa sổ shell. Sau đó, nó nói dối với chương trình và nói rằng nó thực sự một thiết bị đầu cuối, trung thực. Trước PTY, bạn đã kết nối các chương trình như thế này với các đường ống, nhưng các đường ống có sự khác biệt đáng kể, như không có kiểm soát dòng chảy. PTY xuất hiện để giải quyết điều này.
Charlie Martin

3
@CharlieMartin "Một TTY thực sự kết nối với thiết bị đầu cuối vật lý". Bàn điều khiển Linux thì sao? Ví dụ: trong một hệ thống Ubuntu, có các Bàn điều khiển Linux Ctrl-Alt-F{1..6}và chúng được kết nối với /dev/tty{1..6}. Bảng điều khiển Linux không phải là thiết bị đầu cuối vật lý, nhưng nó được kết nối với ttyN(không phải là a ptyN). Am i thiếu cái gì ở đây?
Utku

1
Chỉ có điều bạn không thể nói bất cứ điều gì chắc chắn về LINUX sẽ không có trường hợp cạnh kỳ lạ. Trong trường hợp này, bảng điều khiển Linux là một tính năng kernel sử dụng mục nhập dev / dev / tty nhưng sau đó được kết nối với một loạt các thứ để thoát ra khỏi người dùng. vi.wikipedia.org/wiki/Linux_console
Charlie Martin

234

Một tty là một thiết bị đầu cuối (nó là viết tắt của teletype - thiết bị đầu cuối ban đầu sử dụng máy in dòng cho đầu ra và bàn phím cho đầu vào!). Thiết bị đầu cuối về cơ bản chỉ là một thiết bị giao diện người dùng sử dụng văn bản cho đầu vào và đầu ra.

Một pty là một thiết bị đầu cuối giả - đó là một triển khai phần mềm xuất hiện cho chương trình đính kèm như thiết bị đầu cuối, nhưng thay vì giao tiếp trực tiếp với thiết bị đầu cuối "thực", nó chuyển đầu vào và đầu ra sang một chương trình khác.

Ví dụ, khi bạn ssh vào một máy và chạy ls, lslệnh sẽ gửi đầu ra của nó tới một thiết bị đầu cuối giả, phía bên kia được gắn vào daemon SSH.


1
Bạn có thể đưa ra một ví dụ "chính xác" hơn về PTY không? Tôi vẫn không hiểu họ đến từ đâu và thậm chí họ được gọi như thế nào. Cảm ơn
dùng3085931

Ai đó có thể giúp đỡ khi nào và làm thế nào *nixhệ điều hành dựa trên tạo ra các thiết bị đầu cuối giả này.
Krishna Oza

@darth_coder: Chúng được tạo khi một ứng dụng yêu cầu. Điều đó xảy ra khi bạn làm những việc như mở cửa sổ thiết bị đầu cuối đồ họa mới hoặc đăng nhập từ xa.
phê

@caf bạn có thể đặt tên cho các mô-đun hạt nhân hoặc daemon chịu trách nhiệm sinh ra một thiết bị đầu cuối.
Krishna Oza

@darth_coder: Bất kỳ ứng dụng nào cũng có thể làm như vậy. sshdxtermlà hai ví dụ điển hình.
phê

21

tty: teletype. Thường đề cập đến các cổng nối tiếp của máy tính, mà các thiết bị đầu cuối được gắn vào.

pty: pseudoteletype. Hạt nhân được cung cấp cổng giả được kết nối với các chương trình mô phỏng các thiết bị đầu cuối, chẳng hạn như xterm hoặc màn hình.


19

Nếu bạn chạy lệnh mount không có đối số dòng lệnh, sẽ hiển thị các hệ thống tệp được gắn trên hệ thống của bạn, bạn sẽ nhận thấy một dòng trông giống như thế này: none on / dev / pts type devpts (rw, gid = 5, mode = 620) Điều này cho biết rằng một loại hệ thống tệp đặc biệt, devpts, được gắn tại / dev / pts. Hệ thống tệp này, không được liên kết với bất kỳ thiết bị phần cứng nào, là hệ thống tệp ma thuật của Ma-rốc được tạo bởi Nền tảng Linux. Nó tương tự như hệ thống tập tin / Proc

Giống như thư mục / dev, / dev / pts chứa các mục tương ứng với thiết bị. Nhưng không giống như / dev, là một thư mục thông thường, / dev / pts là một thư mục đặc biệt được tạo ra một cách linh hoạt bởi nhân Linux. Nội dung của thư mục thay đổi theo thời gian và phản ánh trạng thái của hệ thống đang chạy. Các mục trong / dev / pts tương ứng với các thiết bị đầu cuối giả (hoặc giả TTY hoặc PTY).

Linux tạo PTY cho mọi cửa sổ thiết bị đầu cuối mới mà bạn mở và hiển thị mục nhập thích hợp trong / dev / pts. Thiết bị PTY hoạt động như một thiết bị đầu cuối. Nó chấp nhận đầu vào từ bàn phím và hiển thị đầu ra văn bản từ các chương trình chạy trong nó . PTY được đánh số và số PTY là tên của mục tương ứng trong / dev / pts.

Ví dụ: nếu số PTY của cửa sổ đầu cuối mới là 7, hãy gọi lệnh này từ một cửa sổ khác:% echo 'Tôi là một di di ảo'> / dev / pts / 7 Đầu ra xuất hiện trong cửa sổ đầu cuối mới.


2

Một ttylà một vật lý t erminal- t elet y cổng pe trên một máy tính (thường là một cổng nối tiếp).

Từ teletype là một shorting của máy đánh chữ điện báo , hoặc máy đánh chữ thiết bị từ những năm 1930 - chính nó là một thiết bị điện từ thay thế các điện báo máy của những năm 1830 và năm 1840 mã hóa.

Máy điện báo
TTY - Teletypewriter 1930

Một ptylà một p seudo- t ele ty pe cổng cung cấp bởi một máy tính Hệ điều hành hạt nhân cho các chương trình phần mềm kết nối bắt chước thiết bị đầu cuối, chẳng hạn như ssh, xterm, hoặc màn hình.

nhập mô tả hình ảnh ở đây
PTY - PseudoTeletype

Thiết bị đầu cuối chỉ đơn giản là giao diện người dùng của máy tính sử dụng văn bản cho đầu vào và đầu ra.


Triển khai hệ điều hành

Những sử dụng p seudo- t ele ty pe cổng Tuy nhiên, đặt tên và triển khai của họ đã tách ra một chút.

Linux gắn kết một hệ thống tệp đặc biệt phát sinh trên / dev (có lẽ là viết tắt của erial) tạo ra một mục tương ứng trong /dev/ptsmỗi cửa sổ thiết bị đầu cuối mới mà bạn mở, ví dụ:/dev/pts/0


macOS / FreeBSD cũng sử dụng cấu trúc tệp / dev , tuy nhiên, họ sử dụng TTYquy ước đặt tên được đánh số ttyscho mỗi cửa sổ đầu cuối mới mà bạn mở, vd/dev/ttys002


Microsoft Windows vẫn có khái niệm về một LPTcổng cho Thiết bị đầu cuối dòng máy in trong Command Shell để xuất ra máy in.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.