#include #include #include #include #include #ifdef WIN32 #define sleep(sec) _sleep(sec*1000) #endif static int bail (const char *msg) { fprintf (stderr, "TEST ERROR: %s: %s (%d)\n", msg, strerror(errno), errno); return errno; } #define BUF_SIZE 4096 int main(int argc, char *argv[]) { #if 1 //sleep(3); int rc = write(fileno(stdout), "test-test", 9); fprintf(stderr, "rc=%d %s\n", rc, strerror(errno)); //sleep(3); rc = write(fileno(stdout), "\nend", 4); fprintf(stderr, "rc=%d %s\n", rc, strerror(errno)); //sleep(3); return 0; #else int rc; setmode(fileno(stdout), O_BINARY); const char *fname = "D:\\Users\\dmik\\fingerabdruck.mpg"; int fd = open(fname, O_RDONLY | O_BINARY); if (fd == -1) return bail("open"); timeval timeStart; gettimeofday(&timeStart, 0); int size = 0; char buf[BUF_SIZE]; do { rc = read(fd, buf, sizeof(buf)); if (rc == -1) { bail("read"); break; } if (rc == 0) break; // fprintf(stderr, "."); size += rc; rc = write(fileno(stdout), buf, rc); if (rc == -1) { bail("read"); break; } } while (true); timeval timeEnd; gettimeofday(&timeEnd, 0); close(fd); // fprintf(stderr, "\n"); unsigned long long elapsed = timeEnd.tv_sec * 1000ll + timeEnd.tv_usec / 1000ll; elapsed -= (timeStart.tv_sec * 1000ll + timeStart.tv_usec / 1000ll); unsigned long long speed = size * 1000ull; speed /= elapsed; if (rc != -1) { fprintf(stderr, "Wrote %s\n", fname); fprintf(stderr, "Size %d bytes\n", size); fprintf(stderr, "Time %llu ms\n", elapsed); fprintf(stderr, "Speed %llu bytes/sec\n", speed); } #endif }