# 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 arr1[10]={1,1,1,1,1,1,1,1,1,1};
int id;
int iCount;
int shmid;
int *arr2;
shmid=shmget(IPC_PRIVATE,20,IPC_CREAT| SHM_R | SHM_W);
arr2=(int *)shmat(shmid,0,0);
for(iCount=0;iCount<10;iCount++)
{
arr2[iCount]=2;
}
/* Copy Array-1 to Array-2 Using 2 Processes */
id=process_fork(2);
if(id==0)
{
/* Parent Process */
for(iCount=0;iCount<10;iCount=iCount+2)
{
arr2[iCount]=arr1[iCount];
}
}
else
{
/* Child Process */
for(iCount=1;iCount<10;iCount=iCount+2)
{
arr2[iCount]=arr1[iCount];
}
}
process_join(2,id);
printf("\n Array 2 ... \n");
for(iCount=0;iCount<10;iCount++)
{
printf("arr2[%d] : %d\n",iCount,arr2[iCount]);
}
return 0;
}
/* Output
[divyen@localhost PP-TW1]$ ./Prog04Sh
Array 2 ...
arr2[0] : 1
arr2[1] : 1
arr2[2] : 1
arr2[3] : 1
arr2[4] : 1
arr2[5] : 1
arr2[6] : 1
arr2[7] : 1
arr2[8] : 1
arr2[9] : 1
*/