Cosa sono i pseudo terminali (pty / tty)?


92

Questa potrebbe essere una domanda davvero basilare, ma voglio capirla a fondo.

  1. Che cos'è uno pseudo terminale? (TTY / PTY)
  2. Perché ne abbiamo bisogno? Come sono stati introdotti e qual è stata la necessità?
  3. Sono obsoleti? Non ne abbiamo più bisogno? C'è qualcosa che li ha sostituiti?
  4. Qualche utile caso d'uso?

Cosa ho fatto:

  1. Leggi le pagine man - ottieni alcune informazioni ma non l'immagine esatta.
  2. Ho provato a leggere su di loro da Unix Network Programming di Richard Stevens. Ho delle informazioni ma non la why?parte.

Lo penso anche io, soprattutto se qui non sorgono problemi specializzati come openpty / forkpty.

Ho cercato di contrassegnarlo per la migrazione, ma Linux / Unix non è un obiettivo di migrazione valido. Provando a scendere in pendenza, Super User è già un obiettivo leggermente migliore rispetto a questo sito e forse può indirizzarlo verso un sito ancora migliore.

7
Questa è una buona panoramica: linusakesson.net/programming/tty/index.php
nos

@nos: wow! Questo è un link fantastico. La cosa che stavo cercando. Grazie mille :)
hari,

Il capitolo 62 e il capitolo 64 di Linux Programming Interface possono essere utili
zjk,

Risposte:


42
  1. Un dispositivo che ha le funzioni di un terminale fisico senza essere effettivamente uno. Creato da emulatori terminali come xterm. Maggiori dettagli sono nella manpage pty (7).
  2. Tradizionalmente, UNIX ha il concetto di un terminale di controllo per un gruppo di processi e molte funzioni I / O sono costruite pensando ai terminali. Gli pseudoterminali gestiscono, ad esempio, alcuni caratteri di controllo come ^ C.
  3. Non sono obsoleti e sono utilizzati in molti programmi, incluso ssh.
  4. ssh.

1
Grazie @thiton. Potete per favore approfondire il vostro esempio di ssh? Come usa pty / tty? Come gioca il ruolo di master / slave ssh?
hari,

3
ssh alloca un pty per la shell che crea. La shell è connessa all'estremità dello slave e quindi può contare su tutte le capacità di un normale terminale (es. Termcap se ricordo bene), e il demone ssh si collega all'estremità principale e invia e riceve lì il suo input.

27

La risposta è nel nome: "Pseudo" significa "non autentico ma con l'apparenza di".

Con i primi terminali, c'era sempre un componente hardware collegato al dispositivo associato, che si trattasse di hardware di visualizzazione o di una porta seriale.

Con xwindows, telnet e ssh, è emersa la necessità che il software "Pseudo device" esegua il lavoro di sostituzione dell'hardware di visualizzazione. Sono "Pseudo Terminals" ... software che emula l'hardware del Terminale, gestendo input e output nello stesso modo in cui un dispositivo fisico farebbe in modo che il software collegato non sia consapevole che non esiste un dispositivo reale collegato.


Perché ora abbiamo molte applicazioni che devono accedere allo stesso hardware, ogni app utilizza l'hardware tramite il terminale "pseudo"?
hari,

Ho ampliato un po 'la risposta - spero che chiarisca.

No, in realtà non abbiamo più quel tipo di hardware in giro. xterm emula un terminale classico, tutto qui.

@thiton: quando dici emulates, questa è la parte software, no?
hari,

1
Quindi usare la parola "terminale" nel contesto UNIX oggi è effettivamente sbagliato? Perché tutto è uno "pseudo-terminale"?
A. Sallai,

11

Gli pseudo-terminali sono emulatori per linee seriali. Forniscono endpoint per shell telnet, ssh e xterm.


2
E sono antiche reliquie (in realtà, le shell / le applicazioni di testo stanno ancora interagendo su un dispositivo che emula uno scrittore di tipo tele su una linea seriale come hanno funzionato 40 anni fa ...) Ne abbiamo ancora bisogno perché non c'è sostituzione: - (
nn

Bene, se consideri il terminal, non penso che tu abbia bisogno di molto più di un flusso di lettere che vanno e vengono ...
Diego Sevilla,

4
@Diego Sevilla L'inventore originale di unix ha eliminato tty / ptys in Plan 9, e lì un terminale utilizza praticamente un flusso di dati in / out. Ma in * nix, i tty sono ancora in circolazione e utilizzati dalle console e dagli emulatori di terminali per controllare, ad esempio, le dimensioni dei terminali, il controllo del flusso, il buffering della linea, eventi chiave speciali e altre cose.
nn.

4
@nos: Si scopre che non sono le antiche reliquie a cui portiamo a credere. Cercare di farne a meno in Windows è piuttosto doloroso alla fine. L'uso del telecomando PowerShell è ostacolato da una cosa: i programmi della console interattiva non funzionano e non possono essere corretti per funzionare correttamente. Non è possibile un editor di testo ragionevole come DOS EDIT o vi.
Joshua,

2
@Joshua Un'altra prova contraria è che i progettisti originali di Unix hanno creato il sistema operativo Plan 9, dove hanno completamente eliminato tty, ma hanno ottenuto il remoting in quel modo (e molto altro) proprio bene.
nn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.