ivorakitin

IPC SystemV Shared memory

Dec 17th, 2025
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <stdlib.h>
  4. #include <sys/wait.h>
  5. #include <sys/ipc.h>
  6. #include <sys/shm.h>
  7. #define SHMSIZE 4
  8. #define ARRAY_ELEM 10
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12.     pid_t pid;
  13.     key_t key;
  14.     int shmid;
  15.     pid = fork();
  16.     if (pid == -1)
  17.     {
  18.         perror("fork");
  19.         exit(EXIT_FAILURE);
  20.     }
  21.     else if (pid == 0)
  22.     {
  23.  
  24.         int *ptr;
  25.         key = ftok(".", 1);
  26.         shmid = shmget(key, sizeof(int) * ARRAY_ELEM, IPC_CREAT | 0755);
  27.         ptr = shmat(shmid, NULL, 0);
  28.         for (int i = 0; i < ARRAY_ELEM; i++)
  29.             ptr[i] = i * 11;
  30.         printf("Child int pointer address: %p\n", ptr);
  31.         shmdt(ptr);
  32.         return 0;
  33.     }
  34.     else if (pid > 0)
  35.     {
  36.         wait(NULL);
  37.         int *ptr;
  38.         key = ftok(".", 1);
  39.         shmid = shmget(key, sizeof(int) * ARRAY_ELEM, 0755);
  40.         ptr = shmat(shmid, NULL, 0);
  41.         printf("Parent int pointer address: %p\n", ptr);        
  42.         for (int i = 0; i < ARRAY_ELEM; i++)
  43.             printf("Shared memory value: %d\n", ptr[i]);
  44.         shmdt(ptr);
  45. //        shmctl(shmid, IPC_RMID, NULL);
  46.     }
  47.     return 0;
  48. }
  49.  
Tags: ipc
Advertisement
Add Comment
Please, Sign In to add comment