#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/select.h>

int main(int argc, char * argv[]){
	int fdin = open(argv[1], O_RDONLY | O_NONBLOCK);
	int fdout = open(argv[2], O_WRONLY);
	char buf[1024];
	for (;;) {
		fd_set rset;
		FD_ZERO(&rset);
		FD_SET(STDIN_FILENO, &rset);
		FD_SET(fdin, &rset);
		int rv = select(fdin + 1, &rset, NULL, NULL, NULL);
		ssize_t n;
		if (FD_ISSET(STDIN_FILENO, &rset)) {
			n = read(STDIN_FILENO, buf, 1024);
			if (n <= 0) break;
			write (fdout, buf, n);
		}
		if (FD_ISSET(fdin, &rset)) {
			n = read(fdin, buf, 1024);
			if (n <= 0) break;
			write (STDOUT_FILENO, buf, n);
		}
	}
}
