Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <semaphore.h>
- #include <fcntl.h>
- #include <sys/stat.h>
- #include <sys/mman.h>
- int main() {
- char* shm_name = NULL;
- char* sem_name = NULL;
- size_t shm_len, sem_len;
- size_t n;
- getdelim(&sem_name, &sem_len, ' ', stdin);
- sem_name[strlen(sem_name) - 1] = '\0';
- getdelim(&shm_name, &shm_len, ' ', stdin);
- shm_name[strlen(shm_name) - 1] = '\0';
- scanf("%zu", &n);
- sem_t* sem;
- if ((sem = sem_open(sem_name, 0)) == SEM_FAILED) {
- perror("sem_open");
- return 2;
- }
- sem_wait(sem);
- sem_close(sem);
- int fd = shm_open(shm_name, O_RDONLY, 0);
- if (fd == -1) {
- perror("shm_open");
- return 3;
- }
- int* array = mmap(NULL, sizeof(int) * n, PROT_READ, MAP_SHARED, fd, 0);
- for (size_t i = 0; i < n; ++i) {
- printf("%d\n", array[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement