#include #include #include #include #include #include using namespace std; const size_t BUF_SIZE {1024}; void Usage(string progname); int main( int argc, char * argv[]) { int flags; int inFD{STDIN_FILENO} , outFD{STDOUT_FILENO}; mode_t mode; if (argc != 3) { Usage(argv[0]); exit(0); } string inFileName{argv[1]}; string outFileName{argv[2]}; if (inFileName != "-") { close(STDIN_FILENO); inFD = open(inFileName.c_str(), O_RDONLY); } if (outFileName != "-") { close(STDOUT_FILENO); flags = O_WRONLY | O_TRUNC | O_CREAT; mode = S_IRUSR | S_IWUSR | S_IROTH | S_IRGRP; outFD = open(outFileName.c_str(),flags, mode); } /* ssize_t numRead; char BUFFER[BUF_SIZE]; while((numRead = read(inFD, BUFFER, BUF_SIZE)) > 0) { write(outFD, BUFFER, numRead); } */ char c = cin.get(); while (cin) { cout << c; c = cin.get(); } close(inFD); close(outFD); return 0; } void Usage(string progname){ cerr << "Usage: " << progname << " infile outfile" << endl; cerr << "\tInfile or outfile can be - for stdin/stdout" << endl; cerr << endl; }