Mi scuso per il doppio - topic, ma ho risolto il problema.

Questa è la soluzione (che sembra funzionare)

codice:
int main(int argc, char **argv) {
	char *stringa = NULL;

	int res, len = 0;
	char *temp;

	do {
		temp = (char *)realloc(stringa, SIZE+len);

		if (temp == NULL) {
			perror("Errore realloc");
			break;
		}
		else {
			stringa = temp;
		}

		res = read(0, &stringa[len], SIZE);
		if(res == -1) {
			perror("Errore read");
			break;
		}
		else len = len + res;

	}
	while (res>0);
Ad ogni modo, data l'inutilità del messaggio, chiedo cortesemente (se ritenuto opportuno) la sua rimozione. Grazie.