#include #include #include #include #include int main(int argc, char **argv) // ls | wc -l { int fds[2]; pid_t pid; if (pipe(fds) == -1) { perror("pipe failed"); exit(1); } if ((pid = fork()) < 0) { perror("fork failed"); exit(2); } if (pid == 0) { // child close(fds[1]); // close output dup2(fds[0], 0); execl("/usr/bin/wc", "wc", "-l", 0); perror("failed to run wc"); } else { // parent close(fds[0]); // close input dup2(fds[1], 1); execl("/bin/ls", "ls", 0); perror("failed to run ls"); } exit(0); }