GNU/Linux >> Linux Esercitazione >  >> Linux

Come Linux usa /dev/tty e /dev/tty0

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


Linux
  1. Come generare una password casuale in Linux usando /dev/random

  2. Quando usare /dev/random vs /dev/urandom?

  3. Come mappare il dispositivo /dev/sdX e /dev/mapper/mpathY dal dispositivo /dev/dm-Z

  4. Cosa sono i file /dev/zero e /dev/null in Linux

  5. Come codificare in base64 /dev/random o /dev/urandom?

tty (/dev/tty ) vs pts (/dev/pts) in Linux

Come posso modificare la quantità e la dimensione dei ramdisk di Linux (/dev/ram0 - /dev/ram15)?

kernel:disabilitare /dev/kmem e /dev/mem

echo o print /dev/stdin /dev/stdout /dev/stderr

Perché sono necessari < o > per usare /dev/tcp

Differenze tra /dev/sda e /dev/sda1