C Programming Tutorial

 
 
 
 
# include<sys/types.h>
# include<sys/ipc.h>
# include<sys/shm.h>

int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    int sum=0,i;
    key_t key=0X1000;
    int *ptr;
    int id,shmid,shmid1;

    int pfork(int);
    void pjoin(int ,int);

    shmid=shmget(key,4,IPC_CREAT|0666);

    if(shmid < 0)
        printf(\"ERROR\\n\");
    else
        printf(\"Shmid Is %d\\n\",shmid);

    shmid1=shmget(key,4,IPC_CREAT|0666);

    printf(\"Shmid1=%d\\n\",shmid1);

    ptr=shmat(shmid,0,0);

    *ptr=0;    
    id=pfork(2);

    if(id==0)
    {
        for(i=0;i<10;i+=2)
        {
            sum=sum+a[i];
        }
        printf(\"Sum in parent is %d\\n\",sum);
    }
    if(id==1)
    {
        for(i=1;i<10;i+=2)
        {
            *ptr=*ptr+a[i];
        }
        printf(\"Sum in child is %d\\n\",*ptr);
    }

    pjoin(2,id);

    sum=sum+*ptr;
    printf(\"the sum is %d\\n\",sum);
    return 0;
}

int pfork(int x)
{
    int j;
    for(j=1;j<x;j++)
    {
        if(fork()==0)
            return j;
    }
    return 0;
}

void pjoin(int x,int id)
{
    int j;

    if(id==0)
    {
        for(j=1;j<x;j++)
        {
            wait(0);
        }    
    }
    else
    {
        exit(0);
    }
}

 
 
Didn't find what you were looking for? Find more on Program to compute sum of an array using parallel processing