#include #include "boost/fdstream.hpp" #include #include #include #include void copyfile (const std::string& infile, const std::string& outfile) { int fdin, fdout; #ifdef _MSC_VER fdin = open( infile.c_str(), O_RDONLY | _O_BINARY); #else fdin = open( infile.c_str(), O_RDONLY); #endif if (fdin < 0) { throw "open failed on input file"; } std::cout << "open succeeded on input file\n"; #ifdef _MSC_VER fdout = open( outfile.c_str(), O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, S_IREAD | S_IWRITE ); #else fdout = open( outfile.c_str(), O_WRONLY | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE ); #endif if (fdout == -1) { throw "open failed on output file"; } std::cout << "open succeeded on output file\n"; // copy all standard input to standard output boost::fdistream in(fdin); boost::fdostream out(fdout); out << in.rdbuf(); close (fdin); close (fdout); } int main() { try { std::string infile="fdstream.hpp"; std::string outfile="tmp.out"; std::cout << "low-level I/O from " << infile << " to " << outfile << std::endl; copyfile(infile,outfile); } catch (const char* s) { std::cerr << "EXCEPTION: " << s << std::endl; } }