Я могу увидеть разницу между / dev / tty и / dev / tty0, протестировав предоставленный метод из этого вопроса . Но мне очень интересно практическое использование этих устройств (например, ситуации, в которых они будут использоваться).
8
/dev/sda
и другое/dev/sda1
обозначают конкретные блочные устройства (одно оказывается частью другого)./dev/tty
с другой стороны, это виртуальное устройство, не связанное ни с каким другим конкретным tty.Ответы:
/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
пользовательских программ включает в себя:/dev/tty0
является текущим активным (я. е. видно на мониторе) виртуальная консоль от операционной системы . Этот специальный файл вряд ли в значительной степени используется системным программным обеспечением, но/dev/console
фактически является «псевдонимом»tty0
и/dev/console
широко используется демонами системного журнала, а иногда и самим ядром.Эксперимент, чтобы показать разницу: запустить
root
оболочку наtty3
( Ctrl+ Alt+ F3) или в эмуляторе терминала. Сейчас жезатем быстро Ctrl+ Alt+ F2, подождите две секунды и Ctrl+ Alt+ все обратно. Где вы видите выход?
И теперь тот же тест для
/dev/tty0
.источник
sshd
) или вxterm
окне, не имеет своего конкретного / dev / tty n . Он не взаимодействует с устройствами системной консоли , потому что он подключен к псевдо-терминальному устройству. Это не мешает ему открывать / dev / tty n, если это корневой процесс, или тот же пользователь вошел в систему на tty n . О добавлении некоторых пунктов о «конкретном tty» к ответу./ dev / tty - управляющий tty для любого процесса. Это может быть ваша оболочка.
Если ваш процесс не имеет контрольного tty, / dev / tty недоступен, это, например, верно для демонов.
Если ваш процесс имеет управляющий tty, то / dev / tty является псевдонимом драйвера для реального драйвера tty, который ваш процесс использует для stdin, stdout или stderr.
Смотрите
man -s7d tty
для получения дополнительной информации. Обратите внимание, что раздел, в котором находится это руководство, может отличаться в разных ОС и его не следует путать со справочной страницей в разделе 1. Поэтому проверьте, напримерman -k tty
.источник