#include #include #include #include #include #include #include #include #include #include int pfds[2]; char buf[100000]; void do_fork(void) { fd_set readfds; struct timeval timeout; int n; n = read(pfds[0], buf, 100000); printf("%d bytes read\n", n); } int main() { pid_t pid; int n; if (pipe(pfds) < 0) { fprintf(stderr, "Couldn't create pipe\n"); exit(1); } pid = fork(); if (! pid) { close(pfds[1]); do_fork(); } else close(pfds[0]); usleep(1000); printf("writing\n"); n = write(pfds[1], buf, 1); getchar(); } .