shm_open() не создает сегмент разделяемой памяти ipcs

Я получил следующий фрагмент кода C, который успешно выполняется:

...
fd = shm_open(memory_package_name, O_CREAT | O_RDWR | O_EXCL , S_IRUSR | S_IWUSR);

if (fd == -1) { //will fail if file already exists because of flag O_EXCL
    printf("\n shm_open() failed with error [%s]\n",strerror(errno));
    exit(EXIT_FAILURE);
} else {
    printf("shm_open success\n");
}
...

С помощью ls -l /dev/shm Я вижу файл с name memory_package_name правильно создан, но когда я использую ipcs он не показывает сегменты общей памяти:

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

Зачем?

1 ответ

Вы пробовали с shmget() а также shmat()?? В любом случае, если вам нужно разделить память между двумя несвязанными процессами, вам понадобится shm_open() действительно, но я думаю, что в вашем случае упущение заключается в призыве присоединиться к этой области памяти с помощью shmat(),

Другие вопросы по тегам