#include #include #include #include #include int main() { int fd = shm_open("/shared", O_CREAT | O_RDWR, 0666); if (fd < 0) { perror("shm_open"); return 1; } ftruncate(fd, PAGE_SIZE); void* address = mmap(nullptr, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (address == MAP_FAILED) { perror("mmap"); return 1; } char* ptr = (char*)address; printf("the value is %c\n", *ptr); *ptr = 'a'; pid_t child = fork(); if (child < 0) { perror("fork"); return 1; } if (child == 0) { *ptr = 'e'; _exit(0); } waitpid(child, NULL, 0); printf("the value is %c\n", *ptr); return 0; }