// Inicialitzacions prèvies per al posterior càlcul dels intervals de cada procés
n= atoi(argument1);
interval = 100 / n;
int_inicial=0;
for(i=0;i<n;i++,punter_interval+=interval)
{
switch(process=fork())
{
case -1: // En cas d'error el procés acaba
sprintf(s, "Error del procés fill:%d\n",process);
write(2,s, strlen(s));
exit(1);
case 0: // Execució normal del procés fill
sprintf(s, "Sóc el fill i procés: %d\n",i+1);
write(2,s, strlen(s));
// Calculem l'interval a assignar a cada procés segons el valor de N (argument)
int_inicial = interval * i;
int_final = int_inicial + interval;
sprintf(s_int_inicial,"%.2g",int_inicial);
sprintf(s_int_final,"%.2g",int_final);
sprintf(s, "Intentaré executar execlp amb parametres int_inicial:%s i int_final:%s:\n",s_int_inicial,s_int_final);
write(2,s, strlen(s));
execlp("./manfut","./manfut",argument2,argument3,s_int_inicial,s_int_final,(char *)0);
write(2,s, strlen(s));
error("Problema creant fill\n");
break;
default: // Quedem a l'espera de la finalització del procés fill
sprintf(s, "CASE Default:Sóc el pare amb fill: %d\n",process);
write(1,s,strlen(s));
pid = wait(&st);
break;
}
}
exit(0);