Unix Man (Справочное руководство)


TERMIO(7) - часть 3


Для выполнения функций INTR, QUIT, SWTCH, ERASE, KILL, EOF и EOL можно назначить символы, отличные от подразумеваемых [см. ]. Символы ERASE, KILL и EOF можно экранировать, то есть лишить их специальных функций, если поместить перед ними символ \.

Если пропала несущая, то всем процессам, для которых данный терминал является управляющим, посылается сигнал освобождения линии (SIGHUP). Если не предусмотрено обработки этого сигнала, то его возникновение вызовет терминирование процесса. Если сигнал освобождения игнорируется, то все последующие операции чтения возвращают признак конца файла. Таким образом процессы, читающие с терминала и проверяющие конец файла, могут соответствующим образом завершиться в случае разрыва связи.

При выполнении записи одного или более символов они передаются терминалу только тогда, когда вывод символов, записанных ранее, завершен. Эхоотображение вводимых символов выполняется посредством их постановки, по мере поступления, в очередь вывода. Если процесс порождает символы быстрее, чем они могут быть выведены, его приостановят, когда размер очереди вывода превысит некоторый предел. При уменьшении очереди до некоторого порогового значения выполнение программы возобновляется.

С помощью системного вызова над терминальными файлами можно выполнять различные управляющие действия. Как правило, при этом используется следующая структура, описанная во включаемом файле <termio.h>:

#define NCC 8 struct termio { unsigned short c_iflag; /* Режимы ввода */ unsigned short c_oflag; /* Режимы вывода */ unsigned short c_cflag; /* Управляющие режимы */ unsigned short c_lflag; /* Локальные режимы */ char c_line; /* Режим работы с линией */ unsigned char c_cc[NCC];/* Управляющие символы */ };

Соответствие управляющих функций и символов задается в массиве c_cc. Ниже приведены номера, приписанные функциям, и подразумеваемые символы:

0VINTRDEL
1VQUITFS
2VERASE#
3VKILL@
4VEOF (VMIN)EOT
5VEOL (VTIME)NUL
6VEOL2
7VSWTCHSUB

Поле c_iflag описывает основные параметры терминального ввода:

IGNBRK

BRKINT

IGNPAR

PARMRK

INPCK

ISTRIP

INLCR

IGNCR

ICRNL

IUCLC

IXON

IXANY

IXOFF

0000001Игнорировать ошибки протокола.
0000002При ошибках протокола генерировать сигнал прерывания.
0000004Игнорировать символы с ошибками четности.
0000010Отмечать ошибки четности.
0000020Разрешить контроль четности.
0000040Отбрасывать старший бит.
0000100Преобразовывать перевод строки в возврат каретки.
0000200Игнорировать возвраты каретки.
0000400Преобразовывать возврат каретки в перевод строки.
0001000Преобразовывать большие буквы в малые.
0002000Разрешить старт/стопное управление выводом.
0004000Разрешить любому символу возобновлять вывод.
0010000Разрешить старт/стопное управление вводом.
<


Начало  Назад  Вперед