Advertisement
_takumi

read.c

Mar 2nd, 2023 (edited)
800
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.18 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <sys/types.h>
  3. #include <sys/mman.h>
  4. #include <fcntl.h>
  5. #include <stdio.h>
  6. #include <string.h>
  7.  
  8. //программа открывает объект - общую память
  9. int main () {
  10.   char memn[] = "client.c"; //  имя объекта
  11.   char *addr;
  12.   int shm;
  13.   int mem_size = 100; //размер области
  14.   int buff[50];
  15.  
  16.   //открыть объект
  17.   if ( (shm = shm_open(memn, O_RDWR, 0666)) == -1 ) {
  18.     printf("Opening error\n");
  19.     perror("shm_open");
  20.     return 1;
  21.   } else {
  22.     printf("Object is open: name = %s, id = 0x%x\n", memn, shm);
  23.   }
  24.  
  25.   //получить доступ к памяти
  26.   addr = mmap(0, mem_size, PROT_WRITE|PROT_READ, MAP_SHARED, shm, 0);
  27.   if (addr == (char*)-1 ) {
  28.     printf("Error getting pointer to shared memory\n");
  29.     return 1;
  30.   }
  31.  
  32.   //осуществить вывод содержимого разделяемой памяти
  33.   printf("Obtained from shared memory:\n      %s\n", addr);
  34.   memcpy(addr, buff, 50 * sizeof(int));
  35.   for (int i = 0; i < 50; ++i) {
  36.     printf("%d ", buff[i]);
  37.   }
  38.   //закрыть открытый объект
  39.   close(shm);
  40.   return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement