Как Linux использует / dev / tty и / dev / tty0

Я вижу разницу между / dev / tty и / dev / tty0, тестируя предоставленный метод из этого вопроса . Но я действительно задумываюсь о практическом использовании этих устройств (например, о ситуациях, которые они будут использовать).

  • почему / dev имеет много ttys
  • Использовать sudo с командой ssh ​​и захватом stdout
  • Почему для выхода из `cat` нужны два нажатия D?
  • Несколько терминалов одновременно без сервера X
  • Является ли количество tty максимальным количеством одновременных сеансов?
  • Какой getty я должен использовать для / dev / tty1 - текстовых консолей tty6 в linux, agetty или что-то еще
  • аргументы программы логики agetty
  • Как я могу запустить `watch` в качестве фоновой работы?
  • 2 Solutions collect form web for “Как Linux использует / dev / tty и / dev / tty0”

    /dev/tty является управляющим tty текущего процесса для любого процесса, который фактически открывает этот специальный файл. Это не обязательно виртуальное консольное устройство ( /dev/tty n ) и может быть pty , последовательным портом и т. Д. Если управляющий tty не является виртуальной консолью, тогда процесс не должен взаимодействовать с консольными устройствами даже если его псевдометрия фактически реализована на системной консоли. E. g. для оболочки в терминальном эмуляторе под локальным сервером X, указанные программы образуют такую ​​цепочку взаимодействий, как:

    Оболочка Unix
    /dev/pts/2 (≡ /dev/tty для его процессов)
    драйвер ядра pty
    /dev/ptmx
    эмулятор терминала
    ⇕ Протокол X Window
    X-сервер
    /dev/tty7 (≡ /dev/tty для сервера)
    системная консоль
    z x c ↿⇂ [_̈░░]
    пользователь

    Использование /dev/tty по программам userland включает в себя:

    • Напишите что-то на управляющий терминал, игнорируя все перенаправления и трубы;
    • Сделать ioctl () – см. Tty_ioctl (4);
    • Например, отсоедините от терминала (TIOCNOTTY).

    /dev/tty0 – это активная в настоящий момент виртуальная консоль операционной системы (то есть видимая на мониторе). Этот специальный файл вряд ли используется системным программным обеспечением, но /dev/console фактически является «псевдонимом» для tty0 а /dev/console широко используется демонами syslog, а иногда и самим ядром.

    Экспериментируйте, чтобы показать разницу: запустите root оболочку на tty3 ( Ctrl + Alt + F3 ) или в эмуляторе терминала. Теперь

     # sleep 2; echo test >/dev/tty 

    затем быстро Ctrl + Alt + F2 , подождите две секунды и Ctrl + Alt + обратно. Где вы видите результат?
    И теперь тот же тест для /dev/tty0 .

    / dev / tty является управляющим tty для любого процесса. Это может быть ваша оболочка.

    Если ваш процесс не имеет управляющего tty, / dev / tty недоступен, это, например, верно для демонов.

    Если у вашего процесса есть управляющий tty, то / dev / tty является псевдонимом драйвера для реального tty-драйвера, который ваш процесс использует для stdin, stdout или stderr.

    См. man -s7d tty для получения дополнительной информации. Обратите внимание, что раздел, в котором находится данное руководство, может различаться между различными ОС и его не следует путать с справочной страницей в разделе 1. Поэтому проверьте, например, man -k tty .

    Linux и Unix - лучшая ОС в мире.