/dev/tty
je řídící tty aktuálního procesu , pro jakýkoli proces, který skutečně otevře tento speciální soubor. Nemusí se nutně jednat o virtuální konzolové zařízení (/dev/tty
n ), a může to být pty, sériový port atd. Pokud řídící tty není virtuální konzole, pak proces nemusí interagovat s konzolovými zařízeními, i když je jeho pseudotty skutečně implementován na systémové konzoli. Např. pro shell v emulátoru terminálu pod lokálně běžícím Xserverem tvoří uvedené programy takový řetězec interakcí jako:
Unixový shell
⇕ /dev/pts/2
(≡ /dev/tty
pro jeho procesy)
ovladač kernel pty
⇕ /dev/ptmx
emulátor terminálu
⇕ Protokol X Window
X server
⇕ /dev/tty7
(≡ /dev/tty
pro server)
systémové konzole
z x c ↿⇂[_̈░░]
uživatel
Použití /dev/tty
by userland programy zahrnují:
- Napište něco do řídicího terminálu, ignorujte všechna přesměrování a roury;
- Vytvořte ioctl() – viz tty_ioctl(4);
- Například odpojte od terminálu (TIOCNOTTY).
/dev/tty0
je aktuálně aktivní (tj. viditelná na monitoru) virtuální konzole operačního systému . Tento speciální soubor pravděpodobně není významně využíván systémovým softwarem, ale /dev/console
je prakticky „alias“ pro tty0
a /dev/console
má velké využití démony syslog a někdy i samotné jádro.
Experiment, abyste ukázali rozdíl:spusťte root
shell na tty3
(Ctrl +Alt +F3 ) nebo v emulátoru terminálu. Nyní
# sleep 2; echo test >/dev/tty
pak rychle Ctrl +Alt +F2 , počkejte dvě sekundy a stiskněte Ctrl +Alt + cokoli zpět. Kde vidíte výstup?
A nyní stejný test pro /dev/tty0
.
/dev/tty je řídící tty pro jakýkoli proces. Toto může být váš shell.
Pokud váš proces nemá řídicí tty, /dev/tty není k dispozici, např. platí pro démony.
Pokud váš proces má řídicí tty, pak /dev/tty je alias ovladače skutečného ovladače tty, který váš proces používá pro stdin, stdout nebo stderr.
Viz man -s7d tty
Pro více informací. Všimněte si, že část, ve které je tato příručka, se může mezi různými OS lišit a neměla by být zaměňována s manuálovou stránkou v části 1. Zkontrolujte tedy např. man -k tty
.