#include #include #include #include char buf[0xffff]; int main() { size_t nread, nwrite, remains; srandom(1); // Always the same pseudo-random sequence while ( (nread=read(0, buf, 0xf & rand())) >= 0 ) { remains = nread; while ( remains ) { nwrite=write(1, buf, nread); if ( nwrite < 0 ) { if ( !(errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) ) { perror("write"); return nwrite; } } else { remains -= nwrite; } } //fprintf(stderr, "nread==%zi, nwrite==%zi\n", nread, nwrite); usleep( 0xfffff & rand() ); } return 0; }