Thiết bị đầu cuối giả (pty / tty) là gì?


92

Đây có thể là câu hỏi thực sự cơ bản nhưng tôi muốn hiểu nó kỹ lưỡng.

  1. Thiết bị đầu cuối giả là gì? (tty / pty)
  2. Tại sao chúng ta cần chúng? Làm thế nào họ được giới thiệu và những gì cần thiết cho nó?
  3. Họ đã lỗi thời? Chúng ta không cần chúng nữa? Có bất cứ điều gì thay thế chúng?
  4. Bất kỳ trường hợp sử dụng hữu ích?

Tôi đã làm gì:

  1. Đọc trang người đàn ông - có một số thông tin nhưng không phải là hình ảnh chính xác.
  2. Đã thử đọc chúng từ Lập trình mạng Unix của Richard Stevens. Có một số thông tin nhưng không phải là why?một phần.

Tôi cũng nghĩ vậy, đặc biệt là nếu không có vấn đề chuyên môn nào như openpty / forkpty phát sinh ở đây.

Đã thử gắn cờ để di chuyển, nhưng Linux / Unix không phải là mục tiêu di chuyển hợp lệ. Thử độ dốc giảm dần, Super User đã là mục tiêu tốt hơn một chút so với trang web này và có lẽ họ có thể định tuyến nó đến một trang web thậm chí còn tốt hơn.

7
Đây là một tổng quan khá tốt: linusakesson.net/programming/tty/index.php
nos

@nos: wow! Đó là một liên kết tuyệt vời. Thứ mà tôi đang tìm kiếm. Cảm ơn rất nhiều :)
hari

Chương 62 và Chương 64 của Giao diện lập trình Linux có thể hữu ích
zjk

Câu trả lời:


42
  1. Một thiết bị có các chức năng của một thiết bị đầu cuối vật lý mà không thực sự là một thiết bị. Được tạo bởi các trình giả lập đầu cuối như xterm. Chi tiết hơn là trong pty manpage (7).
  2. Theo truyền thống, UNIX có một khái niệm về một thiết bị đầu cuối điều khiển cho một nhóm các quy trình và nhiều chức năng I / O được xây dựng với các thiết bị đầu cuối. Ví dụ, xử lý giả, một số ký tự điều khiển như ^ C.
  3. Chúng không bị lỗi thời và được sử dụng trong nhiều chương trình, bao gồm cả ssh.
  4. ssh.

1
Cảm ơn @thiton. Bạn có thể vui lòng giải thích về ví dụ của bạn về ssh? Làm thế nào để nó sử dụng pty / tty? Làm thế nào để vai trò chủ / nô lệ trong ssh?
hari

3
ssh phân bổ một pty cho vỏ nó tạo ra. Shell được kết nối với đầu nô lệ và do đó có thể dựa vào tất cả các khả năng của một thiết bị đầu cuối bình thường (ví dụ: termcap nếu tôi nhớ chính xác), và daemon ssh kết nối với đầu chính và gửi và nhận đầu vào của nó ở đó.

27

Câu trả lời là trong tên - "Pseudo" có nghĩa là "không chính hãng nhưng có sự xuất hiện của".

Với các thiết bị đầu cuối đầu tiên, luôn có một phần cứng được gắn với thiết bị đi kèm, có thể là phần cứng hiển thị hoặc cổng nối tiếp.

Với xwindows, telnet và ssh, cần có phần mềm "thiết bị giả" để thực hiện công việc đứng trong phần cứng hiển thị. Chúng là "Phần mềm giả" ... phần mềm mô phỏng phần cứng Terminal, xử lý đầu vào và đầu ra giống như một thiết bị vật lý để phần mềm được kết nối không nhận biết không có thiết bị thực được đính kèm.


Bởi vì bây giờ chúng ta có nhiều ứng dụng cần truy cập vào cùng một phần cứng, mọi ứng dụng đều sử dụng phần cứng thông qua thiết bị đầu cuối "giả"?
hari

Tôi mở rộng câu trả lời một chút - hy vọng nó rõ ràng.

Không, chúng tôi thực sự không có loại phần cứng xung quanh nữa. xterm mô phỏng một thiết bị đầu cuối cổ điển, đó là tất cả.

@thiton: Khi bạn nói emulates, đó là phần mềm, phải không?
hari

1
Vì vậy, sử dụng từ "thiết bị đầu cuối" trong bối cảnh UNIX ngày nay có thực sự sai? Bởi vì tất cả mọi thứ là một "thiết bị đầu cuối giả"?
A. Sallai

11

Thiết bị đầu cuối giả là trình giả lập cho các dòng nối tiếp. Họ cung cấp các điểm cuối cho các vỏ telnet, ssh và xterm.


2
Và chúng là những di vật cổ xưa (thực sự, các ứng dụng vỏ / ứng dụng văn bản vẫn đang tương tác trên một thiết bị mô phỏng nhà văn kiểu tele qua một dòng nối tiếp như chúng đã hoạt động 40 năm trước ...) Chúng tôi vẫn cần chúng vì không có sự thay thế: - (
số

Chà, nếu bạn xem xét thiết bị đầu cuối, tôi không nghĩ rằng bạn cần nhiều hơn một dòng thư đến và đi ...
Diego Sevilla

4
@Diego Sevilla Nhà phát minh unix ban đầu đã loại bỏ tty / ptys trong Kế hoạch 9, và có một thiết bị đầu cuối khá nhiều chỉ sử dụng một luồng dữ liệu vào / ra. Nhưng trong * nix, các ttys vẫn ở xung quanh và được sử dụng bởi các bảng điều khiển và trình giả lập thiết bị đầu cuối, ví dụ như điều khiển kích thước đầu cuối, điều khiển luồng, bộ đệm dòng, các sự kiện quan trọng đặc biệt và các thứ khác.
số

4
@nos: Hóa ra chúng không phải là di tích cổ mà chúng ta dẫn đến tin tưởng. Cố gắng làm mà không có chúng trong Windows là khá đau đớn cuối cùng. Việc sử dụng từ xa powershell bị cản trở bởi một điều: các chương trình bảng điều khiển tương tác không hoạt động và không thể được sửa chữa để hoạt động đúng. Không có khả năng trình soạn thảo văn bản hợp lý như DOS EDIT hoặc vi.
Joshua

2
@Joshua Một bằng chứng khác ngược lại là các nhà thiết kế ban đầu của Unix đã tạo ra HĐH Plan 9, nơi họ hoàn toàn tránh xa các ttys, nhưng họ đã đạt được điều khiển từ xa theo cách đó (và nhiều hơn nữa).
số
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.