linux ptys merujuk kepada pseudo-terminal Linux, dan pseudo-terminal merujuk kepada pasangan peranti aksara, pseudo-terminal master dan pseudo-terminal slave yang sepadan dengan fail dalam "; /dev/pts/" direktori. Induk dikenal pasti sebagai deskriptor fail dalam memori; terminal pseudo disediakan oleh emulator terminal, iaitu aplikasi yang berjalan dalam mod pengguna.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.
Apakah itu linux ptys?
Terminal pseudo Linux (pty)
Terminal yang sering kita bincangkan terbahagi kepada terminal tty1-6 dan terminal pseudo. Apabila tty1-6 digunakan, sistem Linux biasanya disambungkan terus ke papan kekunci dan monitor, atau penyelesaian maya seperti konsol vSphere digunakan. Artikel ini akan memperkenalkan konsep asas terminal pseudo. Persekitaran yang digunakan dalam bahagian demonstrasi artikel ini ialah ubuntu 18.04.
Pseudo terminal (kadang-kadang juga dipanggil pty) merujuk kepada pseudo terminal master dan pseudo terminal slave untuk peranti aksara. Hamba sepadan dengan fail dalam direktori /dev/pts/, dan induk dikenal pasti sebagai deskriptor fail (fd) dalam ingatan. Terminal pseudo disediakan oleh emulator terminal, iaitu aplikasi yang dijalankan dalam mod pengguna.
Hujung induk ialah hujung yang lebih dekat dengan monitor dan papan kekunci pengguna, dan hujung hamba ialah program CLI (Antara Muka Talian Perintah) yang dijalankan pada terminal maya. Pemacu pseudo-terminal Linux akan memajukan data yang ditulis oleh bahagian induk (seperti papan kekunci) ke bahagian hamba untuk input program, dan memajukan data yang ditulis oleh program di bahagian hamba ke bahagian induk untuk dibaca (pemandu paparan, dll.). Sila rujuk rajah di bawah (gambar ini datang dari Internet):
Program desktop terminal yang kami buka, seperti sebagai Terminal GNOME, Malah, ia adalah perisian emulasi terminal. Apabila perisian emulasi terminal berjalan, ia mencipta pasangan induk dan hamba pseudo-terminal dengan membuka fail /dev/ptmx dan membiarkan shell berjalan di bahagian hamba. Apabila pengguna menekan kekunci papan kekunci dalam perisian simulasi terminal, ia menjana aliran bait dan menulisnya kepada induk Proses shell boleh membaca input daripada hamba dan subrutinnya menulis kandungan output kepada hamba perisian emulasi terminal bertanggungjawab untuk mencetak aksara ke dalam tetingkap.
Terdapat kira-kira tiga jenis senario penggunaan untuk terminal pseudo:
Mengapa konsep pseudo-terminal dicadangkan dalam Linux? Tidak bolehkah program baris arahan seperti shell membaca data terus dari monitor dan papan kekunci?
Untuk menjalankan berbilang emulator terminal pada skrin yang sama dan mencapai log masuk jauh, cangkerang tidak boleh terus melintasi lapisan pseudo-terminal. Di bawah bimbingan virtualisasi, idea utama sistem pengendalian, adalah perlu untuk memperuntukkan berbilang terminal maya kepada berbilang emulator terminal dan pengguna jauh. Bahagian hamba yang digunakan oleh cangkerang dalam gambar di atas ialah terminal maya. Bahagian Master mensimulasikan interaksi di bahagian pengguna. Sebab mengapa ia dipanggil terminal maya ialah selain memajukan aliran data, ia juga kelihatan seperti terminal.
Terminal Pseudo pada asasnya ialah sepasang peranti aksara yang dicipta oleh emulator terminal yang dijalankan dalam mod pengguna. Hamba sepadan dengan fail dalam direktori /dev/pts/, dan induk dikenal pasti sebagai deskriptor fail (fd) dalam ingatan. Untuk pseudo-terminal, perkara utama ialah program terminal emulasi perisian berjalan dalam ruang pengguna Ini adalah perbezaan penting antara terminal tersebut dan sila rujuk rajah di bawah:
/dev/ptmx ialah fail peranti aksara Apabila proses membuka fail /dev/ptmx, proses itu juga akan mendapat penunjuk ke deskriptor fail pseudoterminal master( ptm) dan peranti pseudoterminal slave(pts) yang dicipta dalam direktori /dev/pts. Setiap deskriptor fail yang diperolehi dengan membuka fail /dev/ptmx adalah ptm bebas, yang mempunyai ptmx yang berkaitan sendiri (boleh dianggap terdapat objek ptmx dalam memori) akan mengekalkan deskriptor dan pts secara dalaman perhubungan, membaca dan menulis ke deskriptor fail ini akan dimajukan oleh ptmx ke mata yang sepadan. Kita boleh melihat deskriptor fail yang dibuka oleh ptmx melalui arahan lsof:
$ sudo lsof /dev/ptmx
#include <stdio.h>#include <unistd.h>int main() { printf("PID : %d\n", getpid()); sleep(200); printf("\n"); return 0; }</unistd.h></stdio.h>
Secara amnya apabila kita melaksanakan arahan melalui sambungan jauh, input standard, output standard dan output ralat standard proses akan terikat kepada terminal pseudo yang berikut adalah Mudah atur cara demo:
$ gcc -Wall mydemo.c -o demo $ ./demo
Simpan kod ini dalam fail mydemo.c, dan kemudian laksanakan arahan berikut untuk menyusun dan melaksanakan program:
$ lsof -p 17981
Program demo mengeluarkan PID daripada prosesnya sendiri, kini membuka terminal lain untuk dilaksanakan ia lsof arahan:
Anda boleh melihat 0u (input standard) daripada proses, 1u (output standard) dan 2u (output ralat standard) terikat pada terminal pseudo /dev/pts/0. Pembelajaran yang disyorkan: "tutorial video linux"
Atas ialah kandungan terperinci apa itu linux ptys. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!