/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 .