Was bedeuten pty und tty?

236

Mir ist aufgefallen, dass es viele Erwähnungen von ptyund ttyin einigen OpenSource-Projekten gibt. Kann mir jemand sagen, was sie bedeuten und was der Unterschied zwischen ihnen ist? Vielen Dank!

Warum
quelle

Antworten:

224

"tty" bedeutete ursprünglich "Teletyp" und "pty" bedeutet "Pseudo-Teletyp".

Unter UNIX ist / dev / tty * jedes Gerät, das sich wie ein "Teletyp" verhält, dh ein Terminal. (Teletyp genannt, weil wir das in jenen Tagen für Terminals hatten.)

Ein pty ist ein Pseudotty, ein Geräteeintrag, der wie ein Terminal für den Prozess fungiert, der dort liest und schreibt, aber von etwas anderem verwaltet wird. Sie erschienen zuerst (wie ich mich erinnere) für X Window und Screen und dergleichen, wo Sie etwas brauchten, das sich wie ein Terminal verhält, aber von einem anderen Programm verwendet werden kann.

Charlie Martin
quelle
Ich denke, ptys wurden zu Unix hinzugefügt, um hauptsächlich Telnet, rsh und rlogin zu unterstützen.
Fred Foo
5
@CharlieMartin Was meinst du mit der Pty ist etwas "das sich wie ein Terminal verhalten hat"? Warum sollten wir so etwas wollen? Und wie nutzt ein anderes Programm diese Pty? Ich vermute, dass die pty Befehle oder ähnliches an das reale Terminal (tty) für das Programm weiterleitet. Ist das richtig? Wenn nicht, ignoriere meine Vermutung und beantworte bitte den ersten Teil meines Kommentars.
OKGimmeMoney
16
Stellen Sie sich ein Terminal als Objekt vor: Es verbindet etwas an einem Ende mit stdin und stdout am anderen. Ein echtes TTY verbindet sich mit einem physischen Terminal. Ein PTY stellt eine Verbindung zu einem Programm her, z. B. xterm, einem Befehlsfenster oder einem Shell-Fenster. Es liegt dann am Programm und sagt, es sei wirklich so ein Terminal, ehrlich. Vor PTYs haben Sie Programme wie dieses mit Pipes verbunden, aber Pipes weisen erhebliche Unterschiede auf, z. B. keine Flusskontrolle. PTYs schienen dies zu lösen.
Charlie Martin
3
@CharlieMartin "Ein echtes TTY verbindet sich mit einem physischen Terminal". Was ist mit der Linux-Konsole? In einem Ubuntu-System sind beispielsweise Linux-Konsolen aktiviert, mit Ctrl-Alt-F{1..6}denen eine Verbindung besteht /dev/tty{1..6}. Die Linux-Konsole ist kein physisches Terminal, sie ist jedoch mit einem ttyN(nicht mit einem ptyN) verbunden. Vermisse ich hier etwas?
Utku
1
Nur, dass Sie so ziemlich nichts Bestimmtes über LINUX sagen können, das keinen seltsamen Randfall hat. In diesem Fall ist die Linux-Konsole eine Kernelfunktion, die einen / dev / tty dev-Eintrag verwendet, dann aber mit einer Reihe von Dingen verbunden wird, um den Benutzer zu erreichen. en.wikipedia.org/wiki/Linux_console
Charlie Martin
234

Ein tty ist ein Terminal (es steht für Teletyp - die ursprünglichen Terminals verwendeten einen Zeilendrucker für die Ausgabe und eine Tastatur für die Eingabe!). Ein Terminal ist im Grunde genommen nur ein Benutzeroberflächengerät, das Text für die Eingabe und Ausgabe verwendet.

Ein pty ist ein Pseudo-Terminal - es ist eine Software-Implementierung, die dem angehängten Programm wie ein Terminal erscheint, aber anstatt direkt mit einem "echten" Terminal zu kommunizieren, überträgt es die Ein- und Ausgabe an ein anderes Programm.

Wenn Sie beispielsweise in einen Computer ssh und ausführen ls, lssendet der Befehl seine Ausgabe an ein Pseudo-Terminal, dessen andere Seite an den SSH-Daemon angeschlossen ist.

caf
quelle
1
Könnten Sie ein etwas "präziseres" Beispiel für PTYs geben? Ich habe immer noch nicht verstanden, wo sie hereinkommen und wie sie überhaupt genannt werden. Danke
user3085931
Kann jemand helfen, wann und wie *nixdas Betriebssystem diese Pseudo-Terminals erstellt.
Krishna Oza
@darth_coder: Sie werden erstellt, wenn eine Anwendung eine anfordert. Dies geschieht, wenn Sie beispielsweise ein neues grafisches Terminalfenster öffnen oder sich remote anmelden.
Café
@caf können Sie Kernelmodule oder Daemon benennen, die für das Laichen eines Terminals verantwortlich sind.
Krishna Oza
@darth_coder: Jede Anwendung kann dies tun. sshdund xtermsind zwei typische Beispiele.
Café
21

tty: Teletyp. Bezieht sich normalerweise auf die seriellen Anschlüsse eines Computers, an die Terminals angeschlossen waren.

pty: Pseudoteletyp. Der Kernel stellte einen Pseudoserial-Port bereit, der mit Programmen verbunden ist, die Terminals wie xterm oder screen emulieren.

wnoise
quelle
19

Wenn Sie den Befehl mount ohne Befehlszeilenargumente ausführen, in dem die auf Ihrem System gemounteten Dateisysteme angezeigt werden, sehen Sie eine Zeile, die ungefähr so ​​aussieht: none on / dev / pts type devpts (rw, gid = 5, mode = 620) Dies zeigt an, dass ein spezieller Dateisystemtyp, devpts, unter / dev / pts bereitgestellt wird. Dieses Dateisystem, das keinem Hardwaregerät zugeordnet ist, ist ein "magisches" Dateisystem, das vom erstellt wird Linux Kernel. Es ähnelt dem Dateisystem / proc

Wie das Verzeichnis / dev enthält / dev / pts Einträge, die Geräten entsprechen. Im Gegensatz zu / dev, einem normalen Verzeichnis, ist / dev / pts ein spezielles Verzeichnis, das vom Linux-Kernel dynamisch erstellt wird. Der Inhalt des Verzeichnisses variiert mit der Zeit und spiegelt den Status des laufenden Systems wider. Die Einträge in / dev / pts entsprechen Pseudo-Terminals (oder Pseudo-TTYs oder PTYs).

Linux erstellt für jedes neue Terminalfenster, das Sie öffnen, einen PTY und zeigt einen entsprechenden Eintrag in / dev / pts an. Das PTY-Gerät verhält sich wie ein Endgerät - es akzeptiert Eingaben von der Tastatur und zeigt die Textausgabe der darin ausgeführten Programme an . PTYs sind nummeriert und die PTY-Nummer ist der Name des entsprechenden Eintrags in / dev / pts.

Wenn die PTY-Nummer des neuen Terminalfensters beispielsweise 7 lautet, rufen Sie diesen Befehl in einem anderen Fenster auf:% echo 'Ich bin ein virtuelles Di'> / dev / pts / 7 Die Ausgabe wird im neuen Terminalfenster angezeigt.

nikolaos_mparoutis
quelle
2

A ttyist ein physikalischer t erminal- t elet y PE - Anschluss auf einen Computer ( in der Regel ein serieller Port).

Das Wort Teletyp ist ein Kurzschluss der Telegraphenschreibmaschine oder des Teletypewriter- Geräts aus den 1930er Jahren - selbst ein elektromagnetisches Gerät, das die Telegraphencodierungsmaschinen der 1830er und 1840er Jahre ersetzte .

Teletypewriter
TTY - Teletypewriter 1930er Jahre

A ptyist ein p seudo- t ele ty PE - Anschluss von einem Computer - Betriebssystem - Kernel zu Connect - Software - Programmen bereitgestellt Terminals, wie SSH, xterm oder Bildschirm emulieren.

Geben Sie hier die Bildbeschreibung ein
PTY - PseudoTeletype

Ein Terminal ist einfach die Benutzeroberfläche eines Computers, die Text für die Eingabe und Ausgabe verwendet.


Betriebssystemimplementierungen

Diese verwenden p seudo- t ele ty pe Ports jedoch ihre Benennung und Implementierungen haben ein wenig auseinander.

Linux stellt ein spezielles Dateisystem devpts on / dev bereit (das 's' steht vermutlich für s erial), das /dev/ptsfür jedes neue Terminalfenster, das Sie öffnen, einen entsprechenden Eintrag erstellt , z/dev/pts/0


macOS / FreeBSD verwendet auch die Dateistruktur / dev . Sie verwenden jedoch eine nummerierte TTYNamenskonvention ttysfür jedes neue Terminalfenster, das Sie öffnen, z/dev/ttys002


Microsoft Windows verfügt weiterhin über das Konzept eines LPTAnschlusses für Zeilendruckerterminals in der Befehlsshell für die Ausgabe an einen Drucker.

Tony Barganski
quelle