#include #include #include int main() { int pipe_ends[2]; if (pipe(pipe_ends) == -1) perror("pipe"), exit(-1); int child = fork(); if (child == -1) perror("fork"), exit(-1); if (child == 0) { char msg[] = { "Hi\n" }; close(pipe_ends[0]); write(pipe_ends[1], msg, sizeof msg); char cdone[] = "Child now exiting ...\n"; write(1, cdone, sizeof cdone); } else { char bread, pipe_buf[128]; close(pipe_ends[1]); sleep(1); char csaid[] = "Child says: "; write(1, csaid, sizeof csaid); while ((bread = read(pipe_ends[0], pipe_buf, sizeof pipe_buf)) > 0) write(1, pipe_buf, bread); } }