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


Описание


uses linux;

 

Procedure CFMakeRaw(var Tios:TermIOS);

CFMakeRaw устанавливает флаги в структуре Termios в состояние, соответствующее переводу терминала в неканонический режим. Пример:

uses Linux;

 

procedure ShowTermios(var tios:Termios);

begin

  WriteLn('Input Flags  : $',hexstr(tios.c_iflag,8)+#13);

  WriteLn('Output Flags : $',hexstr(tios.c_oflag,8));

  WriteLn('Line Flags   : $',hexstr(tios.c_lflag,8));

  WriteLn('Control Flags: $',hexstr(tios.c_cflag,8));

end;

 

var

  oldios,

  tios : Termios;

begin

  WriteLn('Old attributes:');

  TCGetAttr(1,tios);

  ShowTermios(tios);

  oldios:=tios;

  Writeln('Setting raw terminal mode'); 

  CFMakeRaw(tios);

  TCSetAttr(1,TCSANOW,tios);

  WriteLn('Current attributes:');

  TCGetAttr(1,tios);

  ShowTermios(tios);

  TCSetAttr(1,TCSANOW,oldios);

end.

Упражнение 9.3. Напишите программу ttystate, которая выводит текущее состояние терминала, связанного со стандартным вводом. Эта программа должна использовать имена констант, описанные в этом разделе (ICANON, ЕСНОЕ, и т.д.). Найдите в справочном руководстве системы полный список этих имен.

Упражнение 9.4. Напишите программу ttyset, которая распознает выходной формат программы ttystate и настраивает терминал, связанный с ее стандартным выводом в соответствии с описанным состоянием. Есть ли какая-то польза от программ ttystate и ttyset, вместе или по отдельности?




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



Книжный магазин