首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shm_open()不创建共享内存段ipcs

shm_open()不创建共享内存段ipcs
EN

Stack Overflow用户
提问于 2018-08-09 18:24:06
回答 1查看 573关注 0票数 0

我得到了下面这段成功执行的C代码:

代码语言:javascript
复制
...
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时,它没有显示任何共享内存段:

代码语言:javascript
复制
------ 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

为什么?

EN

回答 1

Stack Overflow用户

发布于 2018-08-09 18:40:07

你尝试过shmget()shmat()吗??无论如何,如果您需要在两个不相关的进程之间共享内存,您确实需要shm_open(),但我认为在您的情况下缺少的是使用shmat()附加到该内存区域的调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51764549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档