diff --git a/README.md b/README.md index 62ea96bd..744a22e6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Linux-IPC-Shared-memory +# EX: 06 - Linux-IPC-Shared-memory Ex06-Linux IPC-Shared-memory # AIM: @@ -21,13 +21,117 @@ Execute the C Program for the desired output. # PROGRAM: ## Write a C program that illustrates two processes communicating using shared memory. +``` +//shm.c + +#include +#include +#include +#include +#include +#define TEXT_SZ 2048 +struct shared_use_st{ +int written_by_you; +char some_text[TEXT_SZ]; +}; +int main() +{ +int running =1; +void *shared_memory = (void *)0; +struct shared_use_st *shared_stuff; +char buffer[BUFSIZ]; +int shmid; +shmid =shmget( (key_t)1234, sizeof(struct shared_use_st), 0666 | IPC_CREAT); +printf("Shared memort id = %d \n",shmid); +if (shmid == -1) +{ +fprintf(stderr, "shmget failed\n"); exit(EXIT_FAILURE); +} +shared_memory=shmat(shmid, (void *)0, 0); +if (shared_memory == (void *)-1){ +fprintf(stderr, "shmat failed\n"); exit(EXIT_FAILURE);} +printf("Memory Attached at %x\n", (int) shared_memory); +shared_stuff = (struct shared_use_st *)shared_memory; +while(running) +{ +while(shared_stuff->written_by_you== 1) +{ +sleep(1); +printf("waiting for client. \n"); +} +printf("Enter Some Text: "); fgets (buffer, BUFSIZ, stdin); +strncpy(shared_stuff->some_text, buffer, TEXT_SZ); +shared_stuff->written_by_you = 1; +if(strncmp(buffer, "end", 3) == 0){ +running = 0;}} +if (shmdt(shared_memory) == -1) +{ +fprintf(stderr, "shmdt failed\n"); exit(EXIT_FAILURE); +} exit(EXIT_SUCCESS); +} + + + +//shmry2.c + +#include +#include +#include +#include +#include +#define TEXT_SZ 2048 +struct shared_use_st{ +int written_by_you; +char some_text[TEXT_SZ]; +}; +int main() +{ +int running =1; +void *shared_memory = (void *)0; +struct shared_use_st *shared_stuff; +char buffer[BUFSIZ]; +int shmid; +shmid =shmget( (key_t)1234, sizeof(struct shared_use_st), 0666 | IPC_CREAT); +printf("Shared memort id = %d \n",shmid); +if (shmid == -1) +{ +fprintf(stderr, "shmget failed\n"); exit(EXIT_FAILURE); +} +shared_memory=shmat(shmid, (void *)0, 0); +if (shared_memory == (void *)-1){ +fprintf(stderr, "shmat failed\n"); exit(EXIT_FAILURE);} +printf("Memory Attached at %x\n", (int) shared_memory); +shared_stuff = (struct shared_use_st *)shared_memory; +while(running) +{ +while(shared_stuff->written_by_you== 1) +{ +sleep(1); +printf("waiting for client. \n"); +} +printf("Enter Some Text: "); fgets (buffer, BUFSIZ, stdin); +strncpy(shared_stuff->some_text, buffer, TEXT_SZ); +shared_stuff->written_by_you = 1; +if(strncmp(buffer, "end", 3) == 0){ +running = 0;}} +if (shmdt(shared_memory) == -1) +{ +fprintf(stderr, "shmdt failed\n"); exit(EXIT_FAILURE); +} exit(EXIT_SUCCESS); +} + + + +``` + + +## OUTPUT: +![Screenshot 2024-04-29 101323](https://github.com/ANU23000217/Linux-IPC-Shared-memory/assets/139117108/086b13f2-7b78-412d-89ff-5a3098320e4b) + + +![Screenshot 2024-04-29 101334](https://github.com/ANU23000217/Linux-IPC-Shared-memory/assets/139117108/69c1f297-b189-4689-8c7f-1a46e4331d5f) - - -## OUTPUT - - # RESULT: The program is executed successfully.