Advertisement
MarkTiukov

19-0

Apr 11th, 2021
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.90 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <semaphore.h>
  4. #include <fcntl.h>
  5. #include <sys/stat.h>
  6. #include <sys/mman.h>
  7.  
  8. int main() {
  9.     char* shm_name = NULL;
  10.     char* sem_name = NULL;
  11.     size_t shm_len, sem_len;
  12.     size_t n;
  13.     getdelim(&sem_name, &sem_len, ' ', stdin);
  14.     sem_name[strlen(sem_name) - 1] = '\0';
  15.     getdelim(&shm_name, &shm_len, ' ', stdin);
  16.     shm_name[strlen(shm_name) - 1] = '\0';
  17.    
  18.     scanf("%zu", &n);
  19.  
  20.     sem_t* sem;
  21.     if ((sem = sem_open(sem_name, 0)) == SEM_FAILED) {
  22.         perror("sem_open");
  23.         return 2;
  24.     }
  25.     sem_wait(sem);
  26.     sem_close(sem);
  27.    
  28.     int fd = shm_open(shm_name, O_RDONLY, 0);
  29.     if (fd == -1) {
  30.         perror("shm_open");
  31.         return 3;
  32.     }
  33.     int* array = mmap(NULL, sizeof(int) * n, PROT_READ, MAP_SHARED, fd, 0);
  34.     for (size_t i = 0; i < n; ++i) {
  35.         printf("%d\n", array[i]);
  36.     }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement