Mah ... non lo posso provare, ma scriverei qualcosa del genere ...
codice:char c; char *stringa = malloc(sizeof(char)); stringa[0]=0; int i = 0; dup2(p[0],0); close(p[1]); while( read(p[0],&c,sizeof(c) ) ) { i++; stringa = realloc(stringa, (i + 1) * sizeof(char)); stringa[i-1]=c; stringa[i]=0; } printf("%s",stringa);