/dev/tty
è il tty di controllo del processo corrente , per qualsiasi processo che apre effettivamente questo file speciale. Non è necessariamente un dispositivo di console virtuale (/dev/tty
n ), e può essere un pty, una porta seriale, ecc. Se il tty di controllo non è una console virtuale, allora il processo non deve interagire con i dispositivi della console anche se la sua pseudotty è effettivamente implementata sulla console di sistema. Per esempio. per una shell in un emulatore di terminale sotto Xserver in esecuzione locale, detti programmi formano una catena di interazioni come:
Shell Unix
⇕ /dev/pts/2
(≡ /dev/tty
per i suoi processi)
driver pty del kernel
⇕ /dev/ptmx
emulatore di terminale
⇕ Protocollo X Window
Server X
⇕ /dev/tty7
(≡ /dev/tty
per il servitore)
consolle di sistema
z x c ↿⇂[_̈░░]
utente
Uso di /dev/tty
da programmi userland include:
- Scrivi qualcosa al terminale di controllo, ignorando tutti i reindirizzamenti e le pipe;
- Crea un ioctl() – vedi tty_ioctl(4);
- Ad esempio, scollegare dal terminale (TIOCNOTTY).
/dev/tty0
è la console virtuale attualmente attiva (cioè visibile sul monitor) del sistema operativo . Questo file speciale è improbabile che venga utilizzato in modo significativo dal software di sistema, ma /dev/console
è praticamente un "alias" per tty0
e /dev/console
è molto utilizzato dai demoni syslog e, a volte, dal kernel stesso.
Sperimenta per mostrare la differenza:esegui un root
shell su tty3
(Ctrl +Alt +F3 ) o in un emulatore di terminale. Ora
# sleep 2; echo test >/dev/tty
quindi rapidamente Ctrl +Alt +F2 , attendi due secondi e premi Ctrl +Alt + qualsiasi cosa indietro. Dove vedi l'output?
E ora lo stesso test per /dev/tty0
.
/dev/tty è il tty di controllo per qualsiasi processo. Questa potrebbe essere la tua shell.
Se il tuo processo non ha un tty di controllo, /dev/tty non è disponibile, ad es. vale per i demoni.
Se il tuo processo ha un tty di controllo, allora /dev/tty è un alias del driver del vero driver tty che il tuo processo sta usando per stdin, stdout o stderr.
Vedi man -s7d tty
per maggiori informazioni. Si noti che la sezione in cui si trova questo manuale può differire tra diversi sistemi operativi e non deve essere confusa con la pagina man nella sezione 1. Quindi controllare ad es. man -k tty
.