#include #include #include #include #include int main() { int c, n, o, t; struct termios orig, term; t = 0; if((o = open("/var/tmp/r.in", O_RDWR)) == -1) err(1, "/var/tmp/r.in"); /* Enter "raw" terminal mode. */ tcgetattr(t, &orig); tcgetattr(t, &term); term.c_lflag &= ~(ICANON|ECHO|ISIG); tcsetattr(t, TCSANOW, &term); while((n = read(t, &c, 1)) > 0){ if(c == 26) /* ^Z */ break; if(c != '\n') write(t, &c, 1); write(o, &c, 1); } /* Restore original terminal mode. */ tcsetattr(t, TCSANOW, &orig); }