#include #include #include #include #include #include #include #define BUFFSIZE 4096 int main(int argc, char* argv[]) { extern int errno; char* file_read = argv[1]; char* file_write = argv[2]; char buffer[BUFFSIZE]; bzero(buffer, sizeof(buffer)); // opening files int desc_fr = open(file_read, O_RDONLY); if (desc_fr < 0) { fprintf(stderr, "ERROR: opening %s : %s\n", file_read, strerror(errno)); exit(errno); } int desc_fw = open(file_write, O_WRONLY | O_CREAT | O_TRUNC, 0644); if (desc_fw < 0) { fprintf(stderr, "ERROR: opening %s : %s\n", file_write, strerror(errno)); exit(errno); } // reading and writing to buffer int ret_write = 0; int ret_read = BUFFSIZE; while (ret_read == BUFFSIZE) { ret_read = read(desc_fr, buffer, BUFFSIZE); if (ret_read < 0) { fprintf(stderr, "ERROR: reading %s : %s\n", file_read, strerror(errno)); exit(errno); } printf("[%d] %.*s\n", ret_read, ret_read, buffer); // debug ret_write = write(desc_fw, buffer, ret_read); if (ret_write < 0) { fprintf(stderr, "ERROR: writing to %s : %s\n", file_write, strerror(errno)); exit(errno); } bzero(buffer, sizeof(buffer)); } // closing files int ret_close = 0; ret_close = close(desc_fr); if (ret_close < 0) { fprintf(stderr, "ERROR: closing %s : %s\n", file_read, strerror(errno)); exit(errno); } close(desc_fw); if (ret_close < 0) { fprintf(stderr, "ERROR: closing %s : %s\n", file_write, strerror(errno)); exit(errno); } return EXIT_SUCCESS; } // perror