Системное программирование в 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, вместе или по отдельности?

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