#include #include #include #include #include int main(int argc, char *argv[]) { char buf[1600]; int f,l; fd_set fds; if(argc < 2) { printf("Usage: datacopy file_name\n"); return 1; } f = open(argv[1], O_RDWR); while(1){ FD_ZERO(&fds); FD_SET(STDIN_FILENO, &fds); FD_SET(f, &fds); select(f + 1, &fds, NULL, NULL, NULL); if( FD_ISSET(f, &fds) ) { l = read(f,buf,sizeof(buf)); if (l <= 0) break; write(STDOUT_FILENO,buf,l); } if( FD_ISSET(STDIN_FILENO, &fds) ) { l = read(STDIN_FILENO,buf,sizeof(buf)); if (l <= 0) break; write(f,buf,l); } } return 0; }