Системное программирование в UNIX средствами Free Pascal

       

Массив с_сс


Символы редактирования строки, которые рассматривались в разделе 9.2.4, находятся в массиве с_сс. Их позиции в этом массиве задаются константами, определенными в файле stdio. Все определенные в спецификации ХSI значения приведены в табл. 9.1. Размер массива определяется константой

NCCS, определенной в файле linux.

Следующий фрагмент программы показывает, как можно изменить значение символа quit

для терминала, связанного со стандартным вводом (дескриптор файла со значением 0):

var

  tdes:termios;

(* Получить исходные настройки терминала *)

tcgetattr(0, tdes);

tdes.c_cc[VQUIT] := char(octal(031)); (* CTRL-Y *)

(* Изменить установки терминала *)

tcsetattr(0, TCSAFLUSH, tdes);

Таблица 9.1. Коды управляющих символов



Константа

Значение

VINTR

Клавиша прерывания (Interrupt key)

VQUIT

Клавиша завершения (Quit key)

VERASE

Символ стирания (Erase character)

VKILL

Символ удаления строки (Kill character)

VEOF

Символ конца файла (EOF character)

VEOL

Символ конца строки (End of line marker – необязательный)

VSTART

Символ продолжения передачи данных (Start character)

VSTOP

Символ остановки передачи данных (Stop character)

VSUSP

Символ временной приостановки выполнения (Suspend character)

Этот пример иллюстрирует наиболее безопасный способ изменения состояния терминала. Сначала нужно получить текущее состояние терминала. Далее следует изменить только нужные параметры, не трогая остальные. И, наконец, изменить состояние терминала при помощи модифицированной структуры termios. Как уже было упомянуто, сохранять исходные значения полезно также для восстановления состояния терминала перед завершением программы, иначе нестандартное состояние терминала может оказаться сюрпризом для остальных программ.



Содержание раздела