// Experiment 21(ii): Inter-Process Communication using SHARED MEMORY
// READER program
// Compile: gcc 21b_shared_mem_reader.c -o shmreader
// Run    : ./shmreader   (run AFTER ./shmwriter)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/shm.h>

#define SHM_SIZE 1024

int main() {
    key_t key = ftok("shmfile", 75);

    int shmid = shmget(key, SHM_SIZE, 0666 | IPC_CREAT);
    if (shmid < 0) { perror("shmget"); exit(1); }

    char *str = (char*) shmat(shmid, (void*)0, 0);
    if (str == (char*)-1) { perror("shmat"); exit(1); }

    printf("Data read from shared memory: %s\n", str);

    // Detach and destroy the shared segment
    shmdt(str);
    shmctl(shmid, IPC_RMID, NULL);
    return 0;
}
