Código
ls | grep 'patron' | wc -l
Entonces, en este caso son 3 comandos. Tengo un código de prueba pero no esta funacionando. Si alguien pasó por esto o tiene alguna sugerencia bienvenido sea.
Código
int main (int argc, char *argv[]) { int i, fd[2], fd0[2], pid[3]; /* Creación recurso tubería, por el padre */ pipe(fd); /* 1er hijo, ejecuta ls */ if ( (pid[0]= fork()) == 0) { dup2(fd[1], STDOUT_FILENO); close(fd[0]); execlp("/bin/ls", "ls", NULL); } pipe(fd0); /* 2do hijo, ejecuta filtro */ if ( (pid[1]=fork()) == 0) { dup2(fd[0], STDIN_FILENO); close(fd[1]); dup2(fd0[1], STDOUT_FILENO); close(fd0[0]); char* arg[] = { "sort", "sort", NULL }; execvp(arg[0], &arg[1]); //execvp(argv[1], &argv[1]); } if((pid[2]=fork()) == 0) { dup2(fd0[0], STDIN_FILENO); close(fd0[1]); char* arg[] = { "wc", "wc", "-l", NULL }; execvp(arg[0], &arg[1]); } /* El padre no interviene */ close(fd[0]); close(fd[1]); close(fd0[0]); close(fd0[1]); /*for (i=0; i<2; i++) wait(pid[i]);*/ }