# include <stdio.h>
# include </usr/include/sys/types.h>
# include </usr/include/sys/shm.h>
# include </usr/include/sys/ipc.h>
# include "forkjoin.h"int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int FinalSum=0;
int id,NPROC=5;
int iCount;
int shmid;
int *MAX,FinalMax;
int *MIN,FinalMin;
shmid=shmget(IPC_PRIVATE,sizeof(int)*NPROC,IPC_CREAT| SHM_R | SHM_W);
MAX=(int *)shmat(shmid,0,0);
shmid=shmget(IPC_PRIVATE,sizeof(int)*NPROC,IPC_CREAT | SHM_R | SHM_W);
MIN=(int *)shmat(shmid,0,0);
id=process_fork(NPROC);
MAX[id]=arr[id];
MIN[id]=arr[id];
for(iCount=id+NPROC;iCount<10;iCount=iCount+NPROC)
{
if(arr[iCount] > MAX[id])
{
MAX[id]=arr[iCount];
}
if(arr[iCount] < MIN[id])
{
MIN[id]=arr[iCount];
}
}
process_join(NPROC,id);
FinalMax=MAX[0];
FinalMin=MIN[0];
for(iCount=1;iCount<NPROC;iCount++)
{
if(FinalMax < MAX[iCount])
{
FinalMax=MAX[iCount];
}
if(FinalMin > MIN[iCount])
{
FinalMin=MIN[iCount];
}
}
printf("\n Maximum : %d \n",FinalMax);
printf("\n Minimum : %d \n",FinalMin);
return 0;
}
/* Output
[divyen@localhost PP-TW1]$ ./Prog08
Maximum : 10
Minimum : 1
*/