/dev/tty
является управляющим tty текущего процесса для любого процесса, который фактически открывает этот специальный файл. Это не обязательно виртуальное консольное устройство ( /dev/tty
n ), и может бытьпсевдотерминалпоследовательный порт и т. д. Если управляющий tty не является виртуальной консолью, то процесс не должен взаимодействовать с консольными устройствами, даже если его псевдотетти фактически реализована на системной консоли. Например для оболочки в эмуляторе терминала под локально работающим X-сервером указанные программы образуют такую цепочку взаимодействий, как:
Оболочка Unix
⇕ /dev/pts/2
(≡ /dev/tty
для своих процессов)
ядро pty драйвер
⇕ /dev/ptmx
эмулятор терминала
⇕ Протокол X Window
X сервер
⇕ /dev/tty7
(≡ /dev/tty
для сервера)
системная консоль
zxc↿⇂ [_̈░░]
пользователь
Использование /dev/tty
пользовательских программ включает в себя:
- Напишите что-нибудь на управляющий терминал, игнорируя все перенаправления и каналы;
- Сделайте ioctl () - смотрите tty_ioctl (4);
- Например, отсоединиться от терминала (TIOCNOTTY).
/dev/tty0
является текущим активным (я. е. видно на мониторе) виртуальная консоль от операционной системы . Этот специальный файл вряд ли в значительной степени используется системным программным обеспечением, но /dev/console
фактически является «псевдонимом»tty0
и /dev/console
широко используется демонами системного журнала, а иногда и самим ядром.
Эксперимент, чтобы показать разницу: запустить root
оболочку на tty3
( Ctrl+ Alt+ F3) или в эмуляторе терминала. Сейчас же
# sleep 2; echo test >/dev/tty
затем быстро Ctrl+ Alt+ F2, подождите две секунды и Ctrl+ Alt+ все обратно. Где вы видите выход?
И теперь тот же тест для /dev/tty0
.