#include #include #include #include #define BUFSIZE 100 int setnoncanonical(); int gettermios(struct termios *termp); int settermios(struct termios *termp); int main() { char buf[BUFSIZE]; struct termios term; int ret; fprintf(stderr,"Starting out in current mode\n"); ret = read(STDIN_FILENO,buf,BUFSIZE); if (ret != -1) fprintf(stderr,"Got %d characters: !%.*s!\n",ret,ret,buf); if (gettermios(&term)) { perror("gettermios error"); return 1; } fprintf(stderr,"Setting non-canonical mode\n"); setnoncanonical(); ret = read(STDIN_FILENO,buf,BUFSIZE); if (ret != -1) fprintf(stderr,"Got %d characters: !%.*s!\n",ret,ret,buf); fprintf(stderr,"Restoring mode\n"); if (settermios(&term)) { perror("settermios error"); return 1; } ret = read(STDIN_FILENO,buf,BUFSIZE); if (ret != -1) fprintf(stderr,"Got %d characters: !%.*s!\n",ret,ret,buf); return 0; }