questo programma crea N processi figli in parallelo, ogni figlio calcola per conto suo la potenza: 2 alla i-esima iterazione, questo può essere utile per esempio per calcolare la sommatoria delle potenze di 2.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define N 5
//questo programma crea N processi figli in paralello.
//ogni processo figlio creato fa una cosa e fa la exit.
int result;
int main ()
{
int status, pid, i, sum = 0;
for (i = 0; i < N; i++)
{
pid = fork();
if (pid == 0){
printf("Step %d:", i);
result = power(2, i);
printf("The partial result is: %d\n", result );
exit(result);
}
wait(&status);
printf("Valore di ritorno del figlio: = %d \n", WEXITSTATUS(status));
}
}
Modifichiamo il programma per calcolare appunto la sommatoria delle N prime potenze di 2, #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define N 5
int result;
int main ()
{
int status, pid, i, sum = 0;
for (i = 0; i <= N; i++)
{
pid = fork();
if (pid == 0){
printf("Step %d:", i);
result = power(2, i);
printf("The partial result is: %d\n", result );
exit(result);
}//end if
wait(&status);
sum = sum + WEXITSTATUS(status);
}//end for
printf("the sum is: %d \n", sum);
}
int power(int b, int e)
{
int result =1;
int i;
for (i =1; i<=e; i++)
result=result*b;
return result;
}
Nessun commento:
Posta un commento