سلام دوستان من یه برنامه به c دارم توش از fork استفاده کردم برنامه جواب میده اما من تحلیلش برام سخته و نمیفهممش چون به سیستم عامل ربط داره.این که کجای برنامه مشخص میشه و چطوری که فرایندها همروند اجرا میشن؟؟؟؟چطوری exit وwait با هم کار میکنن؟؟؟ لطفا راهنماییم کنید.
این برنامس:
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>//baraye estefade az tabee sinus
float tabee(int x)
{
float y= 10 * sinf(0.25 * x);
if(y<0)
return -y;
return y;
}
float antegral(int form,int to)
{
return(tabee(form)+tabee(to))/2;
}
int main(){
int i;
float result=0;
float step;
float a[10];
printf("parent starts to creat child processes:\n");
for(i=0;i<10;i++)
{
int pid;
pid=fork();
if(pid==0)
{
printf("i am child %d \n",i);
step=antegral(i,i+1);
a[i]=step;
printf("child start:%d & result:%f \n",i,step);
exit(step);
}// end of if
}// end of for
for(i=0;i<10;i++)
{
int status;
wait(&status);
if(WIFEXITED(status))
{
result +=a[i];
printf("\n total sum is now:%f \n",result);
}
}
printf("antegral is:%f \r\n",result);
return 0;
}