0% found this document useful (0 votes)
60 views5 pages

Made By: Saurav Kumar Reg. No.:16BIT0122 School: Site Course: Os Code: Ite2002 Slot: L41+L42

Two processes, a client and server, communicate using shared memory. The server writes the alphabet from a-z to shared memory. The client reads the alphabet from shared memory and converts it to A-Z, writing the updated characters back to shared memory. Code examples demonstrate the client and server accessing and modifying shared memory to pass data between the processes.

Uploaded by

Vamsi Krishna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views5 pages

Made By: Saurav Kumar Reg. No.:16BIT0122 School: Site Course: Os Code: Ite2002 Slot: L41+L42

Two processes, a client and server, communicate using shared memory. The server writes the alphabet from a-z to shared memory. The client reads the alphabet from shared memory and converts it to A-Z, writing the updated characters back to shared memory. Code examples demonstrate the client and server accessing and modifying shared memory to pass data between the processes.

Uploaded by

Vamsi Krishna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Made by: Saurav Kumar Reg. No.

:16BIT0122
School: SITE Course: OS
Code: ITE2002 Slot: L41+L42

Assume that two processes named client and server running in the system. It is required that
these two processes should communicate with each other using shared memory concept. The
server writes alphabets from a..z to the shared memory .the client should read the alphabets
from the shared memory and convert it to A…Z. Write a program to demonstrate the above
mentioned scenario.

CLIENT:
/*
* shm-client - client program to demonstrate shared memory.
*/
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>

#define SHMSZ 27

main()
{
int shmid;
key_t key;
char *shm, *s;

/*
* We need to get the segment named
* "5678", created by the server.
*/
key = 5678;

/*
* Locate the segment.
*/
if ((shmid = shmget(key, SHMSZ, 0666)) < 0) {
perror("shmget");

This study source was downloaded by 100000828233848 from CourseHero.com on 02-22-2022 21:09:06 GMT -06:00

https://www.coursehero.com/file/27317485/OSLAB3pdf/
exit(1);
}

/*
* Now we attach the segment to our data space.
*/
if ((shm = shmat(shmid, NULL, 0)) == (char *) -1) {
perror("shmat");
exit(1);
}

/*
* Now read what the server put in the memory.
*/
for (s = shm; *s != NULL; s++)
putchar(*s);
putchar('\n');

/*
* Finally, change the first character of the
* segment to '*', indicating we have read
* the segment.
*/
for(i=65;i<=90;i++){
*shm = (char)i;
shm++;
}
exit(0);
}

This study source was downloaded by 100000828233848 from CourseHero.com on 02-22-2022 21:09:06 GMT -06:00

https://www.coursehero.com/file/27317485/OSLAB3pdf/
SERVER:

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>

#define SHMSZ 27

main()
{
char c;
int shmid;
key_t key;
char *shm, *s;

This study source was downloaded by 100000828233848 from CourseHero.com on 02-22-2022 21:09:06 GMT -06:00

https://www.coursehero.com/file/27317485/OSLAB3pdf/
/*
* We'll name our shared memory segment
* "5678".
*/
key = 5678;

/*
* Create the segment.
*/
if ((shmid = shmget(key, SHMSZ, IPC_CREAT | 0666)) < 0) {
perror("shmget");
exit(1);
}

/*
* Now we attach the segment to our data space.
*/
if ((shm = shmat(shmid, NULL, 0)) == (char *) -1) {
perror("shmat");
exit(1);
}

/*
* Now put some things into the memory for the
* other process to read.
*/
s = shm;

for (c = 'a'; c <= 'z'; c++)


*s++ = c;
*s = NULL;

/*
* Finally, we wait until the other process
* changes the first character of our memory
* to '*', indicating that it has read what
* we put there.
*/
while (*shm != '*')
sleep(1);
exit(0);
}

This study source was downloaded by 100000828233848 from CourseHero.com on 02-22-2022 21:09:06 GMT -06:00

https://www.coursehero.com/file/27317485/OSLAB3pdf/
This study source was downloaded by 100000828233848 from CourseHero.com on 02-22-2022 21:09:06 GMT -06:00

https://www.coursehero.com/file/27317485/OSLAB3pdf/
Powered by TCPDF (www.tcpdf.org)

You might also like