Auf Lubuntu 18.04 starte ich eine Shell in lxterminal. Sein steuerndes Terminal ist der aktuelle Pseudoterminal-Slave:
$ tty
/dev/pts/2
Ich würde gerne wissen, welche Beziehungen zwischen meinem aktuellen Controlling-Terminal /dev/pts/2
und bestehen /dev/tty
.
/dev/tty
verhält sich wie mein aktuelles Steuerterminal/dev/pts/2
:$ echo hello > /dev/tty hello $ cat < /dev/tty world world ^C
Aber es scheint sich um nicht verwandte Dateien zu handeln, anstatt dass ein Symlink oder Hardlink zum anderen ist:
$ ls -lai /dev/tty /dev/pts/2 5 crw--w---- 1 t tty 136, 2 May 31 16:38 /dev/pts/2 13 crw-rw-rw- 1 root tty 5, 0 May 31 16:36 /dev/tty
Für verschiedene Sitzungen mit verschiedenen Steuerterminals, wenn
/dev/tty
garantiert ist, dass es sich um deren Steuerterminals handelt. Wie können es verschiedene steuernde Terminals sein, ohne ein Symlink oder Hardlink zu sein?
Was sind ihre Beziehungen und Unterschiede? Jede Hilfe wird sehr geschätzt!
Dieser Beitrag stammt von einem früheren Beitrag. Beziehen sich die Ausgabe des Befehls `tty` und die Datei` / dev / tty` beide auf das steuernde Terminal des aktuellen Bash-Prozesses?
ps -o tty= -p "$$"
funktioniert gut! Ist es nicht möglich, das steuernde Terminal der aktuellen Shell abzurufen /dev/tty
?
/dev/tty
, anruft ioctl(TIOCGDEV, &dev)
, um das Maj: Min Devnum der Realität zu erhalten , und dann danach sucht /dev
. Dies führt jedoch zu mehrdeutigen Ergebnissen, wenn mehr als ein devpts-Dateisystem bereitgestellt wird.
tty
wird das steuernde Terminal nicht gemeldet, aber das Terminal ist auf stdin geöffnet, falls vorhanden. Sieheps -o tty= -p "$$"
für das steuernde Terminal (in der Praxis sind sie an der Eingabeaufforderung einer interaktiven Shell im Allgemeinen gleich).