Unix: общая память. shm_open () возвращает -1

AZ SH спросил: 07 октября 2018 в 01:23 в: linux

Примечание: проблема заключалась в использовании функции fork (). Таким образом, решение найдено.


 //create shared memoery
        int shmfd;
        void *shared_memory = (void *)0;
        shmfd = shm_open("/shm2_rev_to_upp", O_RDWR | O_CREAT | O_EXCL, 0666); //reverse to upper
        if (shmfd == -1) {
           perror("shm_open");
           exit(1);
        }        if(ftruncate(shmfd, sizeof(struct shared_use_st)) == -1){
          perror("ftruncate");
          exit(1);
        }        shared_memory = mmap(NULL, sizeof(struct shared_use_st), PROT_READ | PROT_WRITE, MAP_SHARED, shmfd, 0);        if(shared_memory == MAP_FAILED){
          perror("mmap");
          exit(1);
        }    //some code here    munmap(shared_memory, sizeof(struct shared_use_st));
    shm_unlink("/shm2_rev_to_upp");
    close(shmfd);

Я получил эту ошибку во время выполнения

shm_open: File exists

Then shm_open() return -1 Почему это так? !! Обратите внимание, что в первые пару раз, когда я запускаю программу, ошибка не появляется !!

Как я могу решить эту проблему?!


0 ответов