Was sind Pseudoterminals (pty / tty)?

92

Dies mag eine wirklich grundlegende Frage sein, aber ich möchte sie gründlich verstehen.

  1. Was ist ein Pseudoterminal? (tty / pty)
  2. Warum brauchen wir sie? Wie wurden sie vorgestellt und was war die Notwendigkeit dafür?
  3. Sind sie veraltet? Brauchen wir sie nicht mehr Gibt es irgendetwas, das sie ersetzt hat?
  4. Irgendein nützlicher Anwendungsfall?

Was ich getan habe:

  1. Manpages lesen - habe ein paar Infos, aber nicht das genaue Bild.
  2. Versucht, sie aus Unix Network Programming von Richard Stevens zu lesen. Habe ein paar Infos aber nicht das why?Teil.
hari
quelle
Ich denke auch, besonders wenn hier keine speziellen Probleme wie openpty / forkpty auftauchen.
Versucht, es für die Migration zu markieren, aber Linux / Unix ist kein gültiges Migrationsziel. Super User ist bereits ein etwas besseres Ziel als diese Website, und sie können es möglicherweise an eine noch bessere Website weiterleiten.
7
Dies ist eine ziemlich gute Übersicht: linusakesson.net/programming/tty/index.php
nos
@ nos: wow! Das ist ein großartiger Link. Das, wonach ich gesucht habe. Vielen Dank :)
hari
Kapitel 62 und Kapitel 64 der Linux-Programmierschnittstelle können hilfreich sein
zjk

Antworten:

42
  1. Ein Gerät, das die Funktionen eines physischen Terminals hat, ohne tatsächlich eines zu sein. Erstellt von Terminalemulatoren wie xterm. Weitere Informationen finden Sie in der Manpage pty (7).
  2. Traditionell hat UNIX das Konzept eines steuernden Terminals für eine Gruppe von Prozessen, und viele E / A-Funktionen sind auf Terminals ausgelegt. Pseudoterminals behandeln beispielsweise einige Steuerzeichen wie ^ C.
  3. Sie sind nicht veraltet und werden in vielen Programmen verwendet, einschließlich ssh.
  4. ssh.
Thiton
quelle
1
Vielen Dank @thiton. Können Sie uns bitte Ihr Beispiel erläutern ssh? Wie wird pty / tty verwendet? Wie spielt die Master / Slave-Rolle ssh?
Hari
3
ssh weist der erstellten Shell ein pty zu. Die Shell ist mit dem Slave-Ende verbunden und kann sich dadurch auf alle Funktionen eines normalen Terminals verlassen (z. B. termcap, wenn ich mich richtig erinnere), und der ssh-Daemon stellt eine Verbindung zum Master-Ende her und sendet und empfängt dort seine Eingaben.
27

Die Antwort ist im Namen - "Pseudo" bedeutet "nicht echt, aber mit dem Aussehen von".

Bei den ersten Terminals war immer ein Teil der Hardware mit dem zugehörigen Gerät verbunden, sei es Display-Hardware oder eine serielle Schnittstelle.

Mit xwindows, telnet und ssh gab es ein Bedürfnis nach Software "Pseudo-Geräten", um die Aufgabe zu erfüllen, für Display-Hardware einzustehen. Es handelt sich um "Pseudo-Terminals" ... Software, die Terminal-Hardware emuliert und Eingabe und Ausgabe wie ein physisches Gerät behandelt, sodass die angeschlossene Software nicht merkt, dass kein echtes Gerät angeschlossen ist.

gview
quelle
Da es jetzt viele Anwendungen gibt, die auf dieselbe Hardware zugreifen müssen, verwendet jede App die Hardware über ein "Pseudo" -Terminal?
Hari
Ich habe die Antwort ein wenig erweitert - hoffe es klärt.
Nein, wir haben diese Art von Hardware einfach nicht mehr im Angebot. xterm emuliert ein klassisches Terminal, das ist alles.
@thiton: Wenn Sie sagen emulates, das ist der Softwareteil, nicht wahr?
hari
1
Also ist die Verwendung des Wortes "Terminal" im UNIX-Kontext heute tatsächlich falsch? Weil alles ein "Pseudoterminal" ist?
A. Sallai
11

Pseudo-Terminals sind Emulatoren für serielle Leitungen. Sie stellen Endpunkte für Telnet-, ssh- und xterm-Shells bereit.

Joshua
quelle
2
Und es handelt sich um antike Relikte (Muscheln / Textanwendungen interagieren immer noch über ein Gerät, das einen Teleschreiber über eine serielle Leitung emuliert , wie es vor 40 Jahren funktioniert hat ...). Wir brauchen sie immer noch, weil es keinen Ersatz gibt: - (
Nr.
Nun, wenn Sie das Terminal in Betracht ziehen, brauchen Sie nicht viel mehr als einen Strom von Briefen, die kommen und gehen ...
Diego Sevilla
4
@Diego Sevilla Der ursprüngliche Unix-Erfinder hat tty / ptys in Plan 9 abgeschafft, und dort verwendet ein Terminal so ziemlich nur einen Strom von In / Out-Daten. Aber in * nix gibt es die ttys immer noch und sie werden von Konsolen und Terminalemulatoren verwendet, um z. B. die Terminalgröße, die Flusskontrolle, die Zeilenpufferung, spezielle Schlüsselereignisse und andere Dinge zu steuern.
Nr.
4
@nos: Es stellt sich heraus, dass sie nicht die alten Relikte sind, an die wir glauben. Der Versuch, in Windows auf sie zu verzichten, ist am Ende ziemlich schmerzhaft. Die Verwendung von PowerShell-Remoting wird durch eine Sache behindert: Interaktive Konsolenprogramme funktionieren nicht und können nicht ordnungsgemäß ausgeführt werden. Es gibt keine Möglichkeit eines sinnvollen Texteditors wie DOS EDIT oder vi.
Joshua
2
@Joshua Ein weiterer Beweis für das Gegenteil ist, dass die ursprünglichen Designer von Unix das Plan 9-Betriebssystem erstellt haben, bei dem sie auf ttys vollständig verzichtet haben, aber Remoting auf diese Weise (und noch viel mehr) ganz gut gelungen ist.
Nr.