Интернет магазин китайских планшетных компьютеров



Компьютеры - TTY-абстракция - Настройка TTY

22 января 2011


Оглавление:
1. TTY-абстракция
2. Сценарий использования
3. Место TTY в модели процессов
4. Управление заданиями и сессиями
5. TTY и система сигналов
6. Контроль потока и блокировка ввода-вывода
7. Настройка TTY



Узнать TTY, который контролирует данную программную оболочку, можно при помощи утилиты tty.

Открытый TTY можно настроить при помощи ioctl. Однако, данный интерфейс не является переносимым, поэтому рекомендуется использовать вместо него POSIX-совместимые обёртки.

TTY можно также настроить прямо из консоли, используя утилиту stty, которая основана на упомянутом выше API termios:

$ stty -a
speed 38400 baud; rows 73; columns 238; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

stty -a выводит все настройки TTY. Конкретный TTY можно выбрать при помощи флага -F.

speed показывает скорость UART-порта. Псевдотерминалы игнорируют это значение.

rows и columns показывают размер терминала в символах. По сути, это просто две числовые переменные внутри TTY-драйвера, которые можно свободно читать и изменять. При их изменении активной задаче будет послан сигнал SIGWINCH.

line показывает номер активной дисциплины. Все имеющиеся в системе дисциплины перечислены в /proc/tty/ldiscs.

Далее перечисляются спецсимволы, а в конце — выбранные в настоящий момент опции. Тире означает, что опция отключена.

Примеры

Если открыть окно Xterm, запомнить его TTY и размер, запустить полноэкранное консольное приложение, а потом в другом окне Xterm набрать

stty -F X rows Y

, где X — имя TTY первого окна, а Y — половина его высоты, то vim в первом окне тут же получит сигнал SIGWINCH, и перерисует свой интерфейс, используя лишь половину предоставленного ему окна.


Если в окне Xterm набрать

stty intr o

, то теперь сигнал SIGINT будет генерироваться при вводе символа «o». При этом нажатие ^C ни к чему не приведёт.


Иногда в UNIX-системе не работает кнопка backspace. Это происходит потому, что эмулятор терминала посылает в TTY не тот ASCII-код, которому в этом TTY назначена функция erase. Чтобы решить эту проблему, нужно набрать

stty erase ^H

или

stty erase ^?

. Первая команда установит символ стирания на ASCII-код 8, вторая — на 127. На приложения, работающие в сыром режиме, эти настройки не влияют.


Если в окне Xterm набрать

stty -icanon

, это отключит канонический режим. Если после этого попытаться, например, запустить программу cat, все сочетания клавиш, отвечающие за редактирование текста, такие как ^U или даже backspace, не будут работать. Кроме того, cat будет получать данные не строчками, как раньше, а отдельными символами.


Если в окне Xterm набрать

stty -echo

, это отключит вывод на экран набираемых данных. Вызов после этого программы cat продемонстрирует, что набираемые на клавиатуре данные больше не выводятся на экран. Однако, после нажатия клавиши Enter, ядро передаст последнюю напечатанную строчку программе cat, и она уже выведет её на экран.


Если в окне Xterm набрать

stty -tostop

, это позволит процессам, работающим в фоновом режиме, выводить данные на экран, вместо того чтобы быть заблокированными. Например, команда

 &

покажет приглашение оболочки, однако через 5 секунд в консоль будет выведена строчка «hello, world». Если в это время работать с терминалом, то эта строчка вклинится прямо в этот набираемый текст. Если же набрать

stty tostop

, то запуск команды

 &

приведёт к блокировке этого процесса сигналом SIGTTOU, потому что через 5 секунд он попытается вывести на экран текст, находясь при этом в фоновом режиме. Обычно оболочка в таких случаях выводит на экран предупреждающую надпись. Команда

stty sane

возвращает настройки TTY к «вменяемым» параметрам.

Больше информации можно найти в системе info русск..



Просмотров: 6526


<<< The UNIX-HATERS Handbook
Umask >>>