ho scritto questo semplice programma per impratichirmi sull'uso delle pipe, ma per un motivo che non riesco a comprendere il programma esegue le exec ma non termina... ho provato a mettere delle wait nel processo padre e non mi stampa nemmeno a video il risultato... non so davvero che pesci prendere, sono convinto di essermi perso in un bicchiere d'acqua ...

codice:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main (int argc, char **argv)
{
 int pid1,pid2;
 int fd[2];

 if((pipe(fd))!=0)
  {printf("error!");exit(1);}
 
if (( pid1= fork()) == 0 )
{
 close(fd[0]);
 dup2(fd[1],1);
 execlp("ls","ls",NULL);
 printf("error");
}

if(( pid2= fork()) == 0 )
{
 close(fd[1]);
 dup2(fd[0],0);
 execlp("sort","sort",NULL);
 printf("error");
}

if( pid2 > 0)
{
 exit(0);
}
}
perché secondo voi non termina??