ptmx, pts - Master- und Slave-Pseudoterminal
Die Datei
/dev/ptmx (das Pseudoterminal-Multiplexer-Gerät) ist
eine zeichenorientierte Datei mit der Major-Nummer 5 und der Minor-Nummer 2;
der Zugriffsmodus ist in der Regel 0666, Besitzer ist root:root. Mit ihr wird
ein Master-Slave-Paar von Pseudoterminals erzeugt.
Wenn ein Prozess
/dev/ptmx öffnet, bekommt er einen
Dateideskriptor für ein Pseudoterminal-Master-Gerät.
Außerdem wird ein Pseudoterminal-Slave-Gerät im Verzeichnis
/dev/pts erzeugt. Jeder durch das Öffnen von
/dev/ptmx
erzeugte Dateideskriptor ist ein unabhängiger »pseudoterminal
master« mit seinem eigenen zugehörigen Slave, dessen Pfad durch
einen Aufruf von
ptsname(3) mit dem Dateideskriptor als Argument
bestimmt werden kann.
Vor dem Öffnen des Pseudoterminal-Slaves müssen Sie den
Dateideskriptor des Masters an
grantpt(3) und
unlockpt(3)
übergeben.
Nachdem sowohl der Pseudoterminal-Master und -Slave geöffnet wurden,
stellt der Slave Prozessen eine Schnittstelle bereit, die mit der eines realen
Terminals identisch ist.
In den Slave geschriebene Daten werden dem Master-Dateideskriptor als Eingabe
präsentiert; in den Master geschriebene Daten dienen dem Slave als
Eingabe.
In der Praxis werden Pseudoterminals für die Implementierung von
Terminalemulatoren wie
xterm(1) und Programmen für Anmeldung aus
der Ferne wie
sshd(8) verwendet. Im Fall von Emulatoren werden vom PTM
gelesene Daten durch die Anwendung in der gleichen Weise ausgewertet, wie das
ein reales Terminal täte. Bei Login-Programmen werden die vom PTM
gelesenen Daten über das Netzwerk zu einem Client-Programm gesendet,
das mit einem Terminal oder einem Terminalemulator verbunden ist.
Mit Pseudoterminals können Sie auch die Eingabe für Programme (wie
su(1) und
passwd(1)) realisieren, die normalerweise keine
Eingabe aus Pipes lesen.
/dev/ptmx,
/dev/pts/*
Die Linux-Unterstützung für das oben Erwähnte (auch als
Unix98 Pseudoterminal-Benennung bekannt) erfolgt mit dem
devpts-Dateisystem, welches auf
/dev/pts eingehängt
werden sollte.
getpt(3),
grantpt(3),
ptsname(3),
unlockpt(3),
pty(7)
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard
Schauer <
[email protected]>, Dr. Tobias Quathamer
<
[email protected]>, Mario Blättermann
<
[email protected]> und Helge Kreutzmann
<
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer