Cosa significano pty e tty?


237

Ho notato che ci sono molte menzioni di ptye ttyin alcuni progetti open source, qualcuno potrebbe dirmi cosa significano e qual è la differenza tra loro? Grazie!

Risposte:


225

"tty" originariamente significava "teletipo" e "pty" significa "pseudo-teletipo".

In UNIX, / dev / tty * è un dispositivo che si comporta come un "teletype", ovvero un terminale. (Chiamato teletype perché è quello che avevamo per i terminali in quei giorni degradati.)

Una pty è una pseudotty, una voce del dispositivo che funge da terminale per il processo di lettura e scrittura lì, ma è gestita da qualcos'altro. Sono apparsi per la prima volta (come ricordo) per X Window e per lo schermo e simili, dove avevi bisogno di qualcosa che fungesse da terminale ma che potesse essere usato da un altro programma.


Penso che i pty siano stati aggiunti a Unix principalmente per supportare Telnet, rsh e rlogin.
Fred Foo,

5
@CharlieMartin Che cosa vuoi dire che il pty è qualcosa "che si è comportato come un terminale?" Perché dovremmo desiderare qualcosa del genere? E come fa un altro programma a usare questo pty? La mia ipotesi è che il pty inoltri comandi o qualcosa al terminale for-real (tty) per il programma. È corretto? In caso contrario, ignora la mia ipotesi e per favore rispondi alla prima parte del mio commento.
OK Dammi,

16
Pensa a un terminale come a un oggetto: collega qualcosa da un lato a stdin e stdout dall'altro. Un vero TTY si collega a un terminale fisico. un PTY si connette a un programma, ad esempio xterm o una finestra di comando o una finestra shell. Si trova quindi nel programma e dice che è davvero così terminale, onesto. Prima dei PTY hai collegato programmi come questo con i tubi, ma i tubi presentano differenze significative, come nessun controllo del flusso. I PTY sembravano risolvere questo problema.
Charlie Martin,

3
@CharlieMartin "Un vero TTY si collega a un terminale fisico". E la console Linux? Ad esempio, in un sistema Ubuntu, ci sono console Linux su Ctrl-Alt-F{1..6}cui sono connesse /dev/tty{1..6}. La console Linux non è un terminale fisico, tuttavia è collegata a ttyN(non a ptyN). Mi sto perdendo qualcosa qui?
Utku,

1
Solo che praticamente non puoi dire nulla di preciso su LINUX che non abbia un caso strano. In questo caso, la console Linux è una funzionalità del kernel che utilizza una voce / dev / tty dev ma che viene poi connessa a un mucchio di cose per comunicare all'utente. en.wikipedia.org/wiki/Linux_console
Charlie Martin

235

Un tty è un terminale (sta per teletype - i terminali originali utilizzavano una stampante di linea per l'output e una tastiera per l'input!). Un terminale è fondamentalmente solo un dispositivo di interfaccia utente che utilizza il testo per l'input e l'output.

Un pty è uno pseudo-terminale - è un'implementazione software che appare al programma collegato come un terminale, ma invece di comunicare direttamente con un terminale "reale", trasferisce l'input e l'output a un altro programma.

Ad esempio, quando si accede a una macchina ed si esegue ls, il lscomando invia il suo output a uno pseudo-terminale, l'altro lato del quale è collegato al demone SSH.


1
Potresti dare un esempio un po 'più "preciso" di PTY? Non ho ancora capito da dove vengano e come vengano chiamati. Grazie
user3085931

Qualcuno può aiutare su quando e come *nixil sistema operativo basato crea questi pseudo terminali.
Krishna Oza,

@darth_coder: vengono creati quando un'applicazione ne richiede uno. Ciò accade quando si eseguono operazioni come l'apertura di una nuova finestra del terminale grafico o l'accesso in remoto.
Caf

@caf puoi nominare i moduli del kernel o il demone responsabile della generazione di un terminale.
Krishna Oza,

@darth_coder: qualsiasi applicazione può farlo. sshde xtermsono due esempi tipici.
Caf

21

tty: teletype. Di solito si riferisce alle porte seriali di un computer, a cui erano collegati i terminali.

pty: pseudoteletype. Il kernel ha fornito una porta pseudoseriale collegata a programmi che emulano terminali, come xterm o schermo.


19

Se si esegue il comando mount senza argomenti della riga di comando, che visualizza i file system montati sul proprio sistema, si noterà una riga simile a questa: nessuna su dev dev di tipo / dev / pts (rw, gid = 5, mode = 620) Indica che un tipo speciale di file system, dev Devs, è montato su / dev / pts. Questo file system, che non è associato a nessun dispositivo hardware, è un file system "magico" creato dal Kernel Linux. È simile al file system / proc

Come la directory / dev, / dev / pts contiene voci corrispondenti ai dispositivi. A differenza di / dev, che è una directory ordinaria, / dev / pts è una directory speciale creata dinamicamente dal kernel Linux. Il contenuto della directory varia nel tempo e riflette lo stato del sistema in esecuzione. Le voci in / dev / pts corrispondono a pseudo-terminali (o pseudo-TTY o PTY).

Linux crea un PTY per ogni nuova finestra del terminale che apri e visualizza una voce corrispondente in / dev / pts. Il dispositivo PTY si comporta come un dispositivo terminale: accetta l'input dalla tastiera e visualizza l'output del testo dai programmi che lo eseguono . I PTY sono numerati e il numero PTY è il nome della voce corrispondente in / dev / pts.

Ad esempio, se il numero PTY della nuova finestra del terminale è 7, invocare questo comando da un'altra finestra:% echo 'I am a virtual di'> / dev / pts / 7 L'output appare nella nuova finestra del terminale.


2

A ttyè un fisico t erminal- t elet y porta pe su un computer (di solito una porta seriale).

La parola teletipo è un cortocircuito della macchina da scrivere telegrafica , o dispositivo del teletypewriter degli anni '30 - esso stesso un dispositivo elettromagnetico che ha sostituito le macchine di codifica telegrafica degli anni 1830 e 1840.

Telescrivente
TTY - Teletypewriter 1930s

A ptyè un p seudo- t ele ty pe porta fornito da un computer Sistema Operativo Kernel di programmi software Connect emulano terminali, come ssh, xterm o schermo.

inserisci qui la descrizione dell'immagine
PTY - PseudoTeletype

Un terminale è semplicemente un'interfaccia utente di un computer che utilizza il testo per l'input e l'output.


Implementazioni OS

Questi uso p seudo- t ele ty pe porti tuttavia, la loro denominazione e implementazioni divergono un po '.

Linux monta uno speciale file system devpts su / dev (la 's' presumibilmente in piedi per s erial) che crea una voce corrispondente /dev/ptsper ogni nuova finestra di terminale che si apre, ad esempio,/dev/pts/0


macOS / FreeBSD usano anche la struttura di file / dev , tuttavia usano una TTYconvenzione di denominazione numerata ttysper ogni nuova finestra del terminale che apri, ad es./dev/ttys002


Microsoft Windows ha ancora il concetto di LPTporta per i terminali Line Printer all'interno di Command Shell per l'output su una stampante.

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.