ragazzi sto studiando sistemi distribuiti, le pipe precisamente, e mi sono ritrovato davanti questo pezzo di codice, che dovrebbe esegure in una shell linux il comando "ls | sort". ecco il codice non l ho capito per niente! help!

codice:
#include <sys/types.h>
#include <unistd.h>
pid_t pid;
int pipefd[2];
int main()
{
   pipe(pipefd);
   if ((pid = fork()) == (pid_t)0) { // processo figlio
      close(1);          // close stdout (assumed open)
      dup(pipefd[1]);    // dups arg to min free descriptor
      close(pipefd[0]);
      execlp("ls", "ls", "-1t", (char *)0);
   } else if (pid > (pid_t)0) {            // processo padre
      close(0);          // close stdin (assumed open)
      dup(pipefd[0]);
      close(pipefd[1]);
      execlp("sort", "sort", "-r", (char *)0);
   }
   return(0);
}