1. Develop Application using Inter-Process-Communication (Using shared memory, pipes or message queues).

MESSAGE QUEUE :

Aim :

To write a C Program to implement interprocess communication using message Queues

Algorithm:

1)Start the program

2)Create a message queue using msgget system call

3)If the message queue,is not created goto Step1

4)Copy the string “Hai’ to mtext

5)Create a child process

a)If the Child process is successfully created then send the message otherwise go to step 8

6)If the parent process got the focus receive the message sent by the child

7)Stop the Program

Result:

The program for inter process communication using message Queues

was implemented and hence verified.

MESSAGE QUEUE

#include<stdio.h>

#include<string.h>

#include<sys/ipc.h>

#include<sys/msg.h>

int main()

{

int pid,len,qid;

struct

{

long mtype;

char mtext[10];

}message;

system(“clear”);

printf(“ \n Inter Process communication using message queue \n”);

qid = msgget((key_t)13,IPC_CREAT|0666);

printf(“message queue is created \n”);

if(qid==-1)

{

printf(“message queue is not created \n”);

exit(1);

}

printf(“the value of qid is %s”,qid);

strcpy(message.mtext,”priya”);

message.mtype=1;

len=strlen(message.mtext);

pid=fork();

printf(“\n the value of pid is %d \n”,pid);

if(pid==0)

{

msgsnd(qid,&message,len,IPC_NOWAIT);

printf(“\n Message is sent \n”);

}

if(pid>0)

{

msgrcv(qid,&message,strlen(message.mtext),0,IPC_NOWAIT|MSG_NOERROR);

printf(“\n Message is %s \n”,message.mtext);

printf(“message is received \n”);

}

if(pid=-1)

{

printf(“error in creating a child \n“);

exit(1);

}

}

OUTPUT :

Inter process communication using message queue

The message queue is created

The value of qid is 32769

The value of pid is 0

The value of qid is 32769

The value of pid is 8269

Message is Priya

Message is received

Message is sent

PIPE

Aim :

To write a C Program to implement interprocess communication using Pipe

Algorithm:

  1. Start the program
  2. Create a pipe using pipe() system call
  3. Create a child process.If the child process is created successfully then write the message into the queue otherwise goto step2
  4. Read the message from the pipe and display the message
  5. Stop the program

Result :

The program for inter process communication using Pipe was implemented and hence verified.

#include<stdio.h>

int main()

{

int fd[2],child;

char a[10];

printf("\n Enter the string to enter into the pipe");

scanf("%s",&a);

pipe(fd);

child=fork();

if(! child)

{

close(fd[0]);

write(fd[1],a,5);

wait(0);

}

else

{

close(fd[1]);

read(fd[0],a,5);

printf("\n\n The string retrieved from the pipe is %s",a);

}

return 0;

}

OUTPUT:-

Enter the string to enter into pipe:LOKESH

The string retrieved from the pipe is LOKESH

INTERPROCESS COMMUNICATION USING SHARED MEMORY

Aim

To write a program to implement a shared memory

Algorithm

1. Start the Program

2. Declare the size and data variables

3. Get the number of processes to be inserted

4. Get the value

5. Start and identify the process with process id

6. Make a common function to communicate with each process running in

shared memory

7. Make the variables and arguments to be a global while in communication

8. Write a separate routine for creating memory delete memory in separate region

9. Give permission that a process can kill shared memory

10. Display the values

11. Stop the program

Result

The program for creation of shared memory was implemented and hence verified.

Program

#include<sys/types.h>

#include<sys/shm.h>

#include<sys/ipc.h>

main()

{

int shmid;

key_t key=0x10;

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

if( shmid < 0 )

printf("\nFirst SHMID failed\n");

else

printf("\nFirst SHMID Succeded id=%d \n",shmid);

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

if(shmid<0)

printf("\nSecond SHMID failed\n");

else

printf("\nSecond SHMID Succeded id=%d \n",shmid);

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

if(shmid<0)

printf("\nThird SHMID failed\n");

else

printf("\n Third SHMID Succeded id=%d \n",shmid);

}

Output

First SHMID Succeded id=589836

Second SHMID failed

Third SHMID Succeded id=589836