Ciao, ho fatto un'esame di unix con programmazione in c dove dovevo ordinare un file tramite pipe in ordine numerico ed al contrario. Terminato l'esame mi è stato detto che la soluzione corretta sarebbe stata:
codice:
execlp("sort","sort","-n","-r",file,(char*)0);
Mentre io complicandomi la vita, ho creato un'altra pipe con un altro figlio che ordinasse in ordine numerico, mentre la seconda al contrario in questo modo:
codice:
if((pid2=fork())==0)
{
if((pid3=fork())==0)
{
//NIPOTE3
close(1);
dup(p3p2[1]); //the pipe connecting this nephew with his father
close(p3p2[1]);
execlp("sort","sort","-n",file,(char*)0);
}
}
else
{
//FIGLIO2
close(0);
dup(p3p2[0]);
close(p3p2[0]);
execlp("sort","sort","-r",file,(char*)0);
}
Volevo sapere se aveva in qualche modo senso fare così o ho proprio fatto un errore concettuale. Logicamente la soluzione così non è ottimizzata, ma volevo sapere se secondo voi ho qualche possibilità di averlo fatto giusto.
Grazie mille