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