#include #include #include #include int main(int argc, char* argv[]) { int pf[2]; pipe(pf); int f = fork(); if (f == 0) { // child if (close(pf[0]) < 0) { perror("close"); return 1; } dup2(pf[1], 1); if (close(pf[1]) < 0) { perror("close"); return 2; } execlp(argv[1], argv[1], (char*)NULL); } else { if (close(pf[1]) < 0) { perror("close"); return 3; } dup2(pf[0], 0); if (close(pf[0]) < 0) { perror("close"); return 4; } int status; wait(&status); execlp(argv[2], argv[2], (char*)NULL); } return 0; }