ok ce l'ho fatta

se a qualcuno può interessare ecco la soluzione:

codice:
/**Programma sviluppato in C che esegue la somma del valore dei
byte di un file con l'utilizzo di N processi.(N a scelta)**/


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

/**Funzione che mi realizza la somma parziale dei byte per ogni processo.**/

void sommaparziale(char* buffer, int nbcount,int * fd){
	int i=0;
	int somma=0;
	close(fd[0]);
	for(;i<nbcount;i++){
		somma+=*(buffer+i);
	}
	write(fd[1],&somma,sizeof(int));
	close(fd[1]);
	exit(0);
}

/**Punto di ingresso del programma.**/

int main(int argc,char** argv){
	
	if(argc!=3){
		printf("%s\n","Numero di parametri inseriti errato.\n");
		exit(-1);
	}
	if(!(atoi(argv[2])>=1){
		printf("%s\n","Numero di processi inseriti errato; richiesto un numero maggiore di 0.\n");
	}
		
	char *filename=argv[1];
	printf("%s %s\n","Nome del file inserito: ",filename);
	int numeroproc=atoi(argv[2]);
	printf("%s %d\n","Numero dei processi inserito: ",numeroproc);
	
/**Inizializzazione variabili.**/	
	
	FILE* file;
	int fileDim=0;
	int somma;
	long sommatot=0;
	char* buffer;

/**Creazione pipe di comunicazione.**/

	pid_t pid;
	int fd[2];
	pipe(fd);

/**Controllo esistenza file da analizzare.**/

	if ((file=fopen(filename,"r"))==NULL){
   		fprintf(stderr,"%s\n","File inesistente.");
   		exit(-1);
	}
	
/**Conteggio della dimensione del file.**/

	fseek (file , 0 , SEEK_END);
	fileDim = ftell (file);
	rewind (file);
	
/**Creazione area di memoria per contenere il file da analizzare con successiva
lettura e copia del file in essa.**/
	
 	buffer=(char*)malloc(fileDim);
    fread(buffer,1,fileDim,file);

/**Calcolo della quantità di byte che deve analizzare ogni processo.**/

    int nbcount=fileDim/numeroproc;
    int resto=fileDim%numeroproc;

/**Ciclo che crea i processi per il calcolo della somma e chiama su di essi 
la funzione realizzata per il calcolo della somma parziale.**/

    int i;
    for(i=0;i<numeroproc;i++){
    	pid = fork();
    	if(pid==0){
    		if(i<(numeroproc-1)){
    			sommaparziale(buffer+(nbcount*i),nbcount,fd);
    		}else{
    			sommaparziale(buffer+(nbcount*i),nbcount+resto,fd);
    		}
    	}
    }
    
/**Attesa da parte del processo padre della terminazione dei processi figli.**/
    
    wait(NULL);
    printf("%s\n","Processi figli terminati.\n");
    close(fd[1]);
    
/**Calcolo della somma totale del valore dei byte.**/
    
    for(i=0;i<numeroproc;i++){
    	read(fd[0],&somma,sizeof(int));
    	sommatot+=somma;
    }
    
/**Stampa del valore finale calcolato, liberazione della memoria utilizzata e
uscita dal programma.**/
    
  	printf("\nLa somma totale dei byte è: %d\n",sommatot);
  	free(buffer);
  	exit(0);
}