In: Computer Science
Write a program to demonstrate the implementation of Inter Process Communication (IPC) using shared memory. Single line text.
Inter Process Communication through shared memory is a concept where two or more process can access the common memory. And communication is done via this shared memory where changes made by one process can be viewed by another process.
Shared memory for writer process:-
#include <iostream>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
using namespace std;
int main()
{
   // ftok to generate unique key
   key_t key = ftok("shmfile",65);
   // shmget returns an identifier in shmid
   int shmid = shmget(key,1024,0666|IPC_CREAT);
   // shmat to attach to shared memory
   char *str = (char*) shmat(shmid,(void*)0,0);
   cout<<"Write Data : ";
   gets(str);
   printf("Data written in memory: %s\n",str);
  
   //detach from shared memory
   shmdt(str);
   return 0;
}
SHARED MEMORY FOR READER PROCESS:-
#include <iostream>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
using namespace std;
int main()
{
   // ftok to generate unique key
   key_t key = ftok("shmfile",65);
   // shmget returns an identifier in shmid
   int shmid = shmget(key,1024,0666|IPC_CREAT);
   // shmat to attach to shared memory
   char *str = (char*) shmat(shmid,(void*)0,0);
   printf("Data read from memory: %s\n",str);
  
   //detach from shared memory
   shmdt(str);
  
   // destroy the shared memory
   shmctl(shmid,IPC_RMID,NULL);
  
   return 0;
}