Apa arti pty dan tty?

237

Saya perhatikan ada banyak yang menyebutkan ptydan ttydalam beberapa proyek open source, dapatkah seseorang memberi tahu saya apa artinya dan apa perbedaan di antara mereka? Terima kasih!

Mengapa
sumber

Jawaban:

225

"tty" aslinya berarti "teletype" dan "pty" berarti "pseudo-teletype".

Di UNIX, / dev / tty * adalah perangkat apa pun yang bertindak seperti "teletype", yaitu terminal. (Disebut teletype karena itulah yang kami punya untuk terminal pada masa itu.)

Pty adalah pseudotty, entri perangkat yang bertindak seperti terminal untuk proses membaca dan menulis di sana, tetapi dikelola oleh sesuatu yang lain. Mereka pertama kali muncul (seingat saya) untuk X Window dan layar dan sejenisnya, di mana Anda membutuhkan sesuatu yang bertindak seperti terminal tetapi dapat digunakan dari program lain.

Charlie Martin
sumber
Saya pikir ptys mana ditambahkan ke Unix terutama untuk mendukung Telnet, rsh dan rlogin.
Fred Foo
5
@CharlieMartin Apa maksudmu pty itu sesuatu "yang bertindak seperti terminal?" Mengapa kita menginginkan sesuatu seperti itu? Dan bagaimana program lain menggunakan pty ini? Dugaan saya adalah bahwa pty me-relay perintah atau sesuatu ke terminal for-real (tty) untuk program. Apakah ini benar? Jika tidak, abaikan tebakan saya dan tolong jawab bagian pertama dari komentar saya.
OKGimmeMoney
16
Pikirkan terminal sebagai objek: terminal menghubungkan sesuatu di satu ujung ke stdin dan stdout di ujung lainnya. TTY nyata terhubung ke terminal fisik. PTY terhubung ke suatu program, misalnya, xterm, atau jendela perintah, atau jendela shell. Kemudian kebohongan untuk program dan mengatakan itu benar-benar sangat terminal, jujur. Sebelum PTY, Anda menghubungkan program seperti ini dengan pipa, tetapi pipa memiliki perbedaan yang signifikan, seperti tidak ada kontrol aliran. PTY tampaknya menyelesaikan ini.
Charlie Martin
3
@CharlieMartin "TTY sungguhan terhubung ke terminal fisik". Bagaimana dengan Konsol Linux? Misalnya, dalam sistem Ubuntu, ada Linux Consoles Ctrl-Alt-F{1..6}dan mereka terhubung /dev/tty{1..6}. Linux Console bukan terminal fisik, namun terhubung ke ttyN(bukan ke ptyN). Apakah saya melewatkan sesuatu di sini?
Utku
1
Hanya saja Anda tidak bisa mengatakan sesuatu yang pasti tentang LINUX yang tidak memiliki kasus tepi aneh. Dalam hal ini konsol Linux adalah fitur kernel yang menggunakan entri / dev / tty dev tetapi kemudian terhubung ke banyak hal untuk keluar ke pengguna. en.wikipedia.org/wiki/Linux_console
Charlie Martin
235

Tty adalah terminal (singkatan dari teletype - terminal asli menggunakan printer garis untuk output dan keyboard untuk input!). Terminal pada dasarnya hanyalah perangkat antarmuka pengguna yang menggunakan teks untuk input dan output.

Pty adalah pseudo-terminal - ini adalah implementasi perangkat lunak yang muncul ke program terlampir seperti terminal, tetapi alih-alih berkomunikasi langsung dengan terminal "nyata", ia mentransfer input dan output ke program lain.

Sebagai contoh, ketika Anda ssh ke mesin dan menjalankan ls, lsperintah mengirim outputnya ke terminal semu, sisi lain yang dilampirkan ke daemon SSH.

kaf
sumber
1
Bisakah Anda memberi sedikit lebih banyak contoh "tepat" tentang PTY? Saya masih tidak mengerti dari mana mereka datang, dan bagaimana mereka dipanggil. Terima kasih
user3085931
Dapatkah seseorang membantu kapan dan bagaimana *nixsistem operasi berbasis menciptakan terminal semu ini.
Krishna Oza
@darth_coder: Dibuat ketika aplikasi meminta satu. Itu terjadi ketika Anda melakukan hal-hal seperti membuka jendela terminal grafis baru atau masuk dari jarak jauh.
caf
@caf dapat Anda beri nama modul kernel atau daemon yang bertanggung jawab untuk pemijahan terminal.
Krishna Oza
@darth_coder: Aplikasi apa pun dapat melakukannya. sshddan xtermdua contoh khas.
caf
21

tty: teletype. Biasanya mengacu pada port serial komputer, di mana terminal terpasang.

pty: pseudoteletype. Kernel menyediakan port pseudoserial yang terhubung ke program yang meniru terminal, seperti xterm, atau layar.

Wnoise
sumber
19

Jika Anda menjalankan perintah mount tanpa argumen baris perintah, yang menampilkan sistem file yang terpasang pada sistem Anda, Anda akan melihat baris yang terlihat seperti ini: tidak ada tipe devpts pada / dev / pts (rw, gid = 5, mode = 620) Ini menunjukkan bahwa jenis khusus dari sistem file, devpts, dipasang di / dev / pts. Sistem file ini, yang tidak terkait dengan perangkat perangkat keras apa pun, adalah sistem file "ajaib" yang dibuat oleh Kernel Linux. Ini mirip dengan sistem file / proc

Seperti direktori / dev, / dev / pts berisi entri yang sesuai dengan perangkat. Tetapi tidak seperti / dev, yang merupakan direktori biasa, / dev / pts adalah direktori khusus yang dibuat secara dinamis oleh kernel Linux. Isi direktori bervariasi dengan waktu dan mencerminkan keadaan sistem yang sedang berjalan. Entri dalam / dev / pts berhubungan dengan pseudo-terminal (atau pseudo-TTYs, atau PTYs).

Linux membuat PTY untuk setiap jendela terminal baru yang Anda buka dan menampilkan entri yang sesuai di / dev / pts. Perangkat PTY bertindak seperti perangkat terminal — ia menerima input dari keyboard dan menampilkan output teks dari program yang berjalan di dalamnya . PTY diberi nomor, dan nomor PTY adalah nama entri yang sesuai di / dev / pts.

Misalnya, jika nomor PTY jendela terminal baru adalah 7, aktifkan perintah ini dari jendela lain:% echo 'I am a virtual di'> / dev / pts / 7 Output muncul di jendela terminal baru.

nikolaos_mparoutis
sumber
2

Sebuah ttyadalah fisik t erminal- t Elet y pelabuhan pe pada komputer (biasanya port serial).

Kata teletype adalah kependekan dari mesin tik telegraf , atau perangkat teletypewriter dari tahun 1930-an - itu sendiri merupakan perangkat elektromagnetik yang menggantikan mesin pengkodean telegraf tahun 1830-an dan 1840-an.

Teletip
TTY - Teletypewriter 1930-an

Sebuah ptyadalah p seudo- t ele ty pe pelabuhan yang disediakan oleh komputer Sistem Operasi Kernel untuk program perangkat lunak menghubungkan meniru terminal, seperti ssh, xterm, atau layar.

masukkan deskripsi gambar di sini
PTY - PseudoTeletype

Terminal hanyalah antarmuka pengguna komputer yang menggunakan teks untuk input dan output.


Implementasi OS

Ini digunakan p seudo- t ele ty pe port Namun, penamaan dan implementasi mereka telah menyimpang sedikit a.

Linux tunggangan khusus sistem file devpts di / dev (yang 's' mungkin berdiri untuk s erial) yang menciptakan sesuai entri dalam /dev/ptsuntuk setiap jendela terminal baru Anda membuka, misalnya/dev/pts/0


macOS / FreeBSD juga menggunakan struktur file / dev namun, mereka menggunakan TTYkonvensi penamaan bernomor ttysuntuk setiap jendela terminal baru yang Anda buka misalnya/dev/ttys002


Microsoft Windows masih memiliki konsep LPTport untuk Terminal Printer Lini di dalam Command Shell-nya untuk output ke printer.

Tony Barganski
sumber