#include <signal.h> #include <termio.h> struct termio savetty; main() { extern sigcatch(); struct termio newtty; int nrd; char buf[32]; signal(SIGINT,sigcatch); if (ioctl(0,TCGETA,&savetty) == -1) { printf("ioctl завершилась неудачно: нет терминала\n"); exit(); } newtty = savetty; newtty.c_lflag &= ~ICANON;/* выход из канонического режима */ newtty.c_lflag &= ~ECHO; /* отключение эхо-сопровождения*/ newtty.c_cc[VMIN] = 5; /* минимум 5 символов */ newtty.c_cc[VTIME] = 100; /* интервал 10 секунд */ if (ioctl(0,TCSETAF,&newtty) == -1) { printf("не могу перевести тер-л в режим без обработки\n"); exit(); } for(;;) { nrd = read(0,buf,sizeof(buf)); buf[nrd] = 0; printf("чтение %d символов '%s'\n",nrd,buf); } } sigcatch() { ioctl(0,TCSETAF,&savetty); exit(); } |