2010-12-13 16 views
177

Ich habe bemerkt, dass es viele Erwähnungen von pty und tty in einigen Opensource-Projekten gibt, könnte mir jemand sagen, was sie meinen und was ist der Unterschied zwischen ihnen? Vielen Dank!Was bedeuten pty und tty?

Antwort

168

"tty" bedeutet ursprünglich "Fernschreiber" und "pty" bedeutet "Pseudo-Fernschreiber".

In UNIX ist/dev/tty * ein beliebiges Gerät, das sich wie ein "Fernschreiber" verhält, dh Terminal. (Teletype genannt, weil wir das für Terminals in diesen Tagen hatten.)

A pty ist ein Pseudoty, ein Geräteeintrag, der wie ein Terminal zum Lesen und Schreiben des Prozesses dient, aber von etwas anderem verwaltet wird. Sie erschienen zuerst (soweit ich mich erinnere) für X Windows und Bildschirm und dergleichen, wo Sie etwas brauchten, das als Terminal fungierte, aber von einem anderen Programm benutzt werden konnte.

+2

Ich hatte PTYs in PDP-11 RSTS/E im Jahr 1976 ... – EJP

+0

Ich denke, ptys wo zu Unix in erster Linie hinzugefügt, um Telnet, Rsh und Rlogin zu unterstützen. –

+0

@larsmans, hatten wir Telnet (zumindest) bevor es eine Pty war - in der Tat, Telnet und ich beide im selben Jahr 1969 in Computing. Ich war irgendwie in der Welt von DECNET als Rsh in UNIX auftauchte, so Ich bin mir der Sache nicht sicher. In jedem Fall ist das ein Teil von "und dergleichen". –

14

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

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

194

Ein Terminal ist ein Terminal (es steht für Fernschreiber - die ursprünglichen Terminals verwendet 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.

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

Zum Beispiel, wenn Sie ssh in eine Maschine und ls ausführen, sendet der ls Befehl seine Ausgabe zu einem Pseudo-Terminal, dessen andere Seite an den SSH-Daemon angeschlossen ist.

+1

Können Sie ein bisschen mehr "präzises" Beispiel von PTYs geben? Ich habe immer noch nicht verstanden, wo sie reinkommen und wie sie überhaupt heißen. Danke – user3085931

+0

Kann jemand helfen, wann und wie '* nix'-basiertes Betriebssystem diese Pseudo-Terminals erstellt. –

+0

@darth_coder: Sie werden erstellt, wenn eine Anwendung eine anfordert. Das passiert, wenn Sie beispielsweise ein neues grafisches Terminalfenster öffnen oder sich remote anmelden. – caf

11

Wenn Sie den Befehl mount ohne Befehlszeilenargumente ausführen, die zeigt die Dateisysteme auf dem System angebracht ist, werden Sie eine Linie bemerken, dass etwas wie folgt aussieht: keine auf/dev/pts devpts Typ (rw, gid = 5, mode = 620) Dies zeigt an, dass ein spezieller Typ von Dateisystem, devpts, unter/dev/pts gemountet ist. Dieses Dateisystem, das keinem Hardwaregerät zugeordnet ist, ist ein " Magic "Dateisystem , das vom Linux-Kernel erstellt wird. Es ähnelt dem Dateisystem/proc

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

Linux einen PTY für jeden neuen Terminalfenster schafft man offen und zeigt eine ent- sprech Eintrag in/dev/pts .Der PTY Gerät verhält sich wie ein Endgerät-it übernimmt Eingabe von der Tastatur und zeigt Textausgabe von die Programme, die darin laufen. PTYs sind nummeriert und die PTY-Nummer ist der Name des entsprechenden Eintrags in /dev/pts.

Für Beispiel, wenn die neue PTY Nummer des Terminalfenster 7 ist, rufen Sie diesen Befehl aus ein weiteres Fenster: % echo ‚Ich bin ein virtuelles di‘>/dev/pts/7 Die Ausgabe erscheint in der neuen Terminalfenster.