3e6 #include #include #include #include #include #include #include #include #include #include int pfds[2]; char buf[100000]; void * thread(void * arg) { fd_set readfds; struct timeval timeout; int n; while (1) { usleep(200000); FD_ZERO(&readfds); FD_SET(pfds[0], &readfds); timeout.tv_sec = 0; timeout.tv_usec = 0; if (! (n = select(pfds[0] + 1, &readfds, NULL, NULL, &timeout))) continue; if (n < 0) { perror("select"); return NULL; } n = read(pfds[0], buf, 100000); printf("%d bytes read\n", n); } } int main() { pthread_t th; int n; if (pipe(pfds) < 0) { fprintf(stderr, "Couldn't create pipe\n"); exit(1); } pthread_create(&th, NULL, thread, NULL); usleep(1000); while (1) { n = write(pfds[1], buf, 100000); usleep(1000); } } . 0