Listing 7. simpleread.cpp Reads from argv[1] at a Nominated usec Rate in argv[2] #include #include #include #include #include #include using namespace std; int main( int argc, char** argv ) { cerr << "opening argv[1]:" << argv[1] << endl; long offset = 0; int fd = open( argv[1], O_RDONLY ); unsigned long usec = 10000; if( argc > 2 ) { stringstream ss; ss << argv[2]; ss >> usec; } cerr << "using delay of usec:" << usec << endl; const int bufsz = 4096; char buf[ bufsz ]; bool error = false; while( true ) { ssize_t rc = read( fd, buf, bufsz ); if( rc > 0 ) { if( error ) { cerr << "reading resumed" << endl; } error = false; offset += rc; } else if( rc == 0 ) { cerr << "end of file" << endl; exit(0); } else { error = true; cerr << "read error:" << errno << " at offset:" << offset << endl; } usleep( usec ); if( offset % (1024*256) == 0 ) cerr << "offset:" << offset << endl; } return 0; }