Apa itu terminal semu (pty / tty)?

92

Ini mungkin pertanyaan yang sangat mendasar tetapi saya ingin memahaminya secara menyeluruh.

  1. Apa itu terminal semu? (tty / pty)
  2. mengapa kita membutuhkan mereka? Bagaimana mereka diperkenalkan dan apa perlunya?
  3. Apakah mereka sudah ketinggalan zaman? Apakah kita tidak membutuhkannya lagi? Apakah ada yang menggantikan mereka?
  4. Adakah case-use yang berguna?

Apa yang saya lakukan:

  1. Baca halaman manual - dapatkan beberapa info tetapi bukan gambar yang tepat.
  2. Mencoba membaca mereka dari Pemrograman Jaringan Unix oleh Richard Stevens. Punya info tapi bukan why?bagiannya.
hari
sumber
Saya pikir juga begitu, terutama jika tidak ada masalah khusus seperti openpty / forkpty muncul di sini.
Mencoba menandai untuk migrasi, tetapi Linux / Unix bukan target migrasi yang valid. Mencoba gradient descent, Pengguna Super sudah menjadi target yang sedikit lebih baik daripada situs ini, dan mungkin mereka dapat merutekannya ke situs yang lebih baik.
7
Ini adalah ikhtisar yang cukup bagus: linusakesson.net/programming/tty/index.php
nos
@nos: wow! Itu tautan yang luar biasa. Hal yang saya cari. Terima kasih banyak :)
hari
Bab 62 dan Bab 64 dari Antarmuka Pemrograman Linux mungkin membantu
zjk

Jawaban:

42
  1. Perangkat yang memiliki fungsi terminal fisik tanpa benar-benar menjadi terminal. Dibuat oleh emulator terminal seperti xterm. Lebih detail ada di halaman manual (7).
  2. Secara tradisional, UNIX memiliki konsep terminal pengendali untuk sekelompok proses, dan banyak fungsi I / O dibangun dengan mempertimbangkan terminal. Pseudoterminals menangani, misalnya, beberapa karakter kontrol seperti ^ C.
  3. Mereka tidak ketinggalan zaman dan digunakan di banyak program, termasuk ssh.
  4. ssh.
thiton
sumber
1
Terima kasih @ thiton. Bisakah Anda jelaskan contoh Anda ssh? Bagaimana cara menggunakan pty / tty? Bagaimana permainan peran master / slave ssh?
hari
3
ssh mengalokasikan pty untuk shell yang dibuatnya. Shell terhubung ke ujung slave dan dengan demikian dapat mengandalkan semua kemampuan terminal normal (misalnya termcap jika saya ingat dengan benar), dan daemon ssh terhubung ke ujung master dan mengirim dan menerima inputnya di sana.
27

Jawabannya adalah dalam nama - "Pseudo" yang berarti "tidak asli tetapi memiliki penampilan".

Dengan terminal pertama, selalu ada perangkat keras yang terpasang dengan perangkat terkait, baik itu perangkat keras display atau port serial.

Dengan xwindows, telnet dan ssh, muncul kebutuhan untuk perangkat lunak "Pseudo devices" untuk melakukan pekerjaan berdiri untuk perangkat keras tampilan. Mereka adalah "Pseudo Terminal" ... perangkat lunak yang mengemulasi perangkat keras Terminal, menangani input dan output dengan cara yang sama seperti perangkat fisik sehingga perangkat lunak yang terhubung tidak sadar bahwa tidak ada perangkat nyata yang terpasang.

gview
sumber
Karena sekarang kita memiliki banyak aplikasi yang perlu mengakses perangkat keras yang sama, setiap aplikasi menggunakan perangkat keras melalui terminal "pseudo"?
hari
Saya sedikit memperluas jawabannya - harap ini menjelaskan.
Tidak, kami tidak memiliki perangkat keras seperti itu lagi. xterm mengemulasi terminal klasik, itu saja.
@thiton: Ketika Anda mengatakan emulates, itu bagian perangkat lunaknya, bukan?
hari
1
Jadi menggunakan kata "terminal" dalam konteks UNIX hari ini sebenarnya salah? Karena semuanya adalah "terminal semu"?
A. Sallai
11

Pseudo-terminal adalah emulator untuk saluran serial. Mereka menyediakan titik akhir untuk shell telnet, ssh, dan xterm.

Joshua
sumber
2
Dan mereka peninggalan kuno (benar-benar, aplikasi kerang / teks masih berinteraksi melalui perangkat yang mengemulasi penulis tele-type melalui garis serial seperti mereka bekerja 40 tahun yang lalu ...) Kami masih membutuhkannya karena tidak ada pengganti: - (
nos
Nah, jika Anda mempertimbangkan terminal, saya pikir Anda tidak perlu lebih dari sekadar aliran surat yang datang dan pergi ...
Diego Sevilla
4
@Diego Sevilla Penemu unix asli menghilangkan tty / ptys di Plan 9, dan ada terminal yang cukup banyak hanya menggunakan aliran data masuk / keluar. Tetapi dalam * nix, ttys masih ada dan digunakan oleh konsol dan emulator terminal untuk misalnya mengontrol ukuran terminal, kontrol aliran, penyangga garis, peristiwa kunci khusus, dan hal-hal lainnya.
no
4
@nos: Ternyata itu bukan peninggalan kuno yang kita percayai. Mencoba melakukannya tanpa mereka di Windows agak menyakitkan pada akhirnya. Penggunaan remoting PowerShell terhambat oleh satu hal: program konsol interaktif tidak berfungsi dan tidak dapat diperbaiki agar berfungsi dengan benar. Tidak ada kemungkinan editor teks yang masuk akal seperti DOS EDIT atau vi.
Yosua
2
@ Yosua Bukti lain yang bertentangan adalah perancang asli Unix menciptakan OS Plan 9, di mana mereka benar-benar menyingkirkan ttys, namun mereka mencapai jarak jauh dengan cara itu (dan banyak lagi) dengan baik.
no.