/dev/tty
ist das steuernde tty des aktuellen Prozesses , für jeden Prozess, der diese spezielle Datei tatsächlich öffnet. Es ist nicht unbedingt ein virtuelles Konsolengerät (/dev/tty
n ) und kann ein pty, ein serieller Port usw. sein. Wenn das steuernde tty keine virtuelle Konsole ist, muss der Prozess nicht mit Konsolengeräten interagieren, selbst wenn sein pseudotty tatsächlich auf der Systemkonsole implementiert ist. Z.B. für eine Shell in einem Terminal-Emulator unter einem lokal laufenden Xserver bilden diese Programme solche Interaktionsketten wie:
Unix-Shell
⇕ /dev/pts/2
(≡ /dev/tty
für seine Prozesse)
Kernel pty-Treiber
⇕ /dev/ptmx
Terminal-Emulator
⇕ X Window-Protokoll
X-Server
⇕ /dev/tty7
(≡ /dev/tty
für den Server)
Systemkonsole
z x c ↿⇂[_̈░░]
Benutzer
Verwendung von /dev/tty
von Userland-Programmen beinhaltet:
- Schreiben Sie etwas an das steuernde Terminal und ignorieren Sie alle Umleitungen und Pipes;
- Erstellen Sie ein ioctl() – siehe tty_ioctl(4);
- Zum Beispiel vom Terminal trennen (TIOCNOTTY).
/dev/tty0
ist die gerade aktive (d.h. auf dem Monitor sichtbare) virtuelle Konsole des Betriebssystems . Diese spezielle Datei wird wahrscheinlich nicht wesentlich von der Systemsoftware verwendet, aber /dev/console
ist praktisch ein „Alias“ für tty0
und /dev/console
wird viel von Syslog-Daemons und manchmal auch vom Kernel selbst verwendet.
Experimentieren Sie, um den Unterschied zu zeigen:Führen Sie root
aus Shell auf tty3
(Strg +Alt +F3 ) oder in einem Terminalemulator. Jetzt
# sleep 2; echo test >/dev/tty
dann schnell Strg +Alt +F2 , zwei Sekunden warten und Strg +Alt +was auch immer zurück. Wo siehst du die Ausgabe?
Und jetzt derselbe Test für /dev/tty0
.
/dev/tty ist das steuernde tty für jeden Prozess. Dies könnte Ihre Shell sein.
Wenn Ihr Prozess kein steuerndes tty hat, ist /dev/tty nicht verfügbar, dies z. gilt für Daemons.
Wenn Ihr Prozess ein steuerndes tty hat, dann ist /dev/tty ein Treiber-Alias für den echten tty-Treiber, den Ihr Prozess für stdin, stdout oder stderr verwendet.
Siehe man -s7d tty
für mehr Informationen. Beachten Sie, dass der Abschnitt, in dem sich dieses Handbuch befindet, je nach Betriebssystem unterschiedlich sein kann und nicht mit der Manpage in Abschnitt 1 verwechselt werden sollte. Überprüfen Sie also z. man -k tty
.