Tuesday, 8 November 2011

IPC USING SHARED MEMORY


#include<sys/ipc.h>
#include<sys/shm.h>
#define SHMKEY 75
#define k 1024
int shmid;
main()
{
int i,*pint;
char *adr1,*adr2;
extern cleanup();
for(i=0;i<10;i++)
signal(i,cleanup);
shmid=shmget(SHMKEY,128*k,0777|IPC_CREAT);
adr1=shmat(shmid,0,0);
adr2=shmat(shmid,0,0);
printf("\n Address 1 0x%x \n Address 2 0x%x \n",&adr1,&adr2);
if(fork()==0)
{
printf("\nIn child");
pint=(int *)adr1;
for(i=0;i<11;i+=2)
*pint++=i;
}
else
{
wait(1);
printf("\tIn Parent\n");
pint=(int *)adr2;
for(i=0;i<5;i++)
printf("\n Index %d \tValue %d \t Address 0x%x\n",i,*pint,pint++);
pause();
}
}
cleanup()
{
shmctl(shmid,IPC_RMID,0);

}

No comments:

Post a Comment