Hej napisalem prosty programik w ktorym tworze dwa procesy jeden przekazuje nazwe pliku drugiemu , ten drugi odczytuje zawartosc pliku i przekazuje ja pierwszemu ktory wyswietla to na ekran. Mam prosbe czy moglby ktos zweryfikowac poprawnosc tego programu ? i mam jeden problem tzn. linie ktore pobieram z pliku i tablica w ktorej przechowuje zawartsc maja zahardkodowana wielkosc.. Jak zaimpelmentowac mechanizm, w ktorym jeden z procesow bedzie sprawdzal wielkosc danych ktore pobiera i dynamicznie rezerwowal tyle miejsca ile potrzeba?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc,char** argv)
{
	int childpid;  
  	int descrA[2],descrB[2];
	char dane[10000];
	char linia[1024];
	char nazwa[255];	
	FILE *plik;
 
  	pipe(descrA);
  	pipe(descrB);
 
  	if((childpid=fork())==-1){
    		printf("Nie mozna stworzyc procesu potomnego\n");
    		exit(-1);
  	}
 	else
	{
  		if(childpid == 0) //dziecko - serwer
		{
    			close(descrA[0]);
			close(descrB[1]);
			sleep(1);
			int c = read(descrB[0],nazwa,sizeof(nazwa)); //odczytuje przekazana przez klienta nazwe pliku
			printf("\tCLIENT - odebralem nazwe pliku -->%s<--\n",nazwa);
			if ((plik = fopen(nazwa, "r")) == NULL) //otwieram plik
    			{
				strcpy(dane,"Serwerze BLAD Przy otwieraniu pliku !!!\n");
			}
			else
			{
				printf("\tCLIENT - udalo sie otworzyc plik. Czytam.....\n");
				while ((fgets(linia, sizeof(linia),plik)) != NULL) //zapisuje linie do tablicy dane
    				{
    					strcat(dane,linia);
    				}
			}
			printf("\tCLIENT - wysylam dane do serwera...\n");
			write(descrA[1],dane,sizeof(dane)); //wysylam klientowi zmienna dane
			fclose(plik);
			exit(0);		
  		}
		else //rodzic klient
		{
			fprintf(stdout, "\033[2J");
			fprintf(stdout, "\033[1;1H");
    			close(descrA[1]);
			close(descrB[0]);
			strcpy(nazwa,argv[1]);
			printf("SERVER - wysylam klientowi nazwe pliku...\n");
			write(descrB[1],nazwa,sizeof(nazwa)); //wysylam serwerowi nazwe pliku
			wait(); //czekanie az klient przetworzy plik
			printf("SERVER - odbieram dane...\n");
			read(descrA[0],dane,sizeof(dane)); //odczyt tego co klient przetworzyl.
			printf("SERVER - oto co mi przeslal klient\n********************************************************\n");
			printf("%s",dane);//wyswietlenie inforamcji.
			printf("********************************************************\n");
	
  		}
	}
 
  return 0;
}