#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
extern char **environ;
int main(int argc, char *argv[])
{
        int f_des[2];
        int i, ret;


        if(pipe(f_des) == -1)
        {
                perror("pipe");
                exit(1);
        }

        if (argc < 3)
        {
                fprintf(stderr, "Usage: %s command command ...\n", *argv);
                exit(4);
        }

        for (i=1; i<argc;)
        {
                switch(fork())
                {
                        case -1:
                                perror("fork");
                                exit(2);
                        case  0:
                                if (i==1)
                                {
                                        dup2(f_des[0], fileno(stdin));
                                        close(f_des[0]);
                                        close(f_des[1]);
                                }
                                i++;
                        default:
                                if (i==1)
                                {
                                        dup2(f_des[1], fileno(stdout));
                                        close(f_des[0]);
                                        close(f_des[1]);
                                }
                                execlp(argv[i], argv[i], (char *) 0);
                                exit(3);
                }
        }
        execlp(argv[i], argv[i], (char *) 0);

}

