Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  apa itu linux ptys

apa itu linux ptys

藏色散人
藏色散人asal
2023-04-20 10:32:532558semak imbas

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.

apa itu linux ptys

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

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.

Senario penggunaan terminal pseudo

Terdapat kira-kira tiga jenis senario penggunaan untuk terminal pseudo:

  • Perisian simulasi terminal dengan antara muka grafik seperti xterm, gnome-terminal, dll. menukar acara papan kekunci dan tetikus kepada input teks dan memaparkan output secara grafik
  • Aplikasi cangkerang jauh ( seperti sshd) menyampaikan input dan output antara terminal jauh pada klien dan pseudo-terminal pada pelayan
  • Aplikasi Multiplexer seperti skrin dan tmux. Mereka menyampaikan input dan output dari satu terminal ke terminal yang lain, memisahkan aplikasi mod teks daripada terminal sebenar

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.

Prinsip Terminal Pseudo

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:

apa itu linux ptys

/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>
proses IO lalai

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn