首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ipcs没有显示我的共享内存和信号量

ipcs没有显示我的共享内存和信号量
EN

Stack Overflow用户
提问于 2013-03-27 14:02:43
回答 3查看 2.8K关注 0票数 4

我使用适当的标志打开共享内存和信号量:

代码语言:javascript
复制
sem = sem_open("/some_name", O_CREAT | O_EXCL, S_IRWXU | S_IRWXG | S_IRWXO, 1);
shm = shm_open("/other_name", O_RDWR | O_CREAT | O_EXCL, S_IRWXU | S_IRWXG | S_IRWXO);

调用不会失败(我检查它们),而且确实有一个fork/exec的其他进程创建它们的进程,其他进程确实共享内存和信号量,并且存在适当的同步。

然而,当我使用ipcs命令时,我看不到共享内存和信号量。为什么会这样呢?如果它们没有与ipcs一起出现,我可以在哪里检查它们?

在我的ipcs输出中,我在信号量数组列表中没有任何条目,共享内存中的条目与skype、firefox和插件容器(火狐的插件)有关。我查过了

代码语言:javascript
复制
grep shmid /proc/*/maps     # observe pid
readlink /proc/pid/exe
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-27 14:23:38

我刚才发现的一个解决方案是,共享内存和共享信号量列在下面:

代码语言:javascript
复制
/dev/shm

那里的文件对于了解有哪些共享对象很有用,也许还可以用于unlink,但除此之外,它们没有提供任何有用的信息(就像ipcs那样)。

票数 4
EN

Stack Overflow用户

发布于 2020-08-14 10:03:05

Ipcs只报告System共享内存。您必须使用Posix共享内存。显然这是两种完全不同的机制。Posix shm显示在/dev/shm下面。

我也有过同样的问题,被接受的答案不够令人满意,因为它没有解释为什么会发生这种情况。我在另一个类似的问题中找到了答案:i cannot see the shared memory created by the boost::interprocess via shell command ipcs

据我所知,ipcs只报告System共享内存。POSIX共享内存是一个单独的区域,必须单独查询。在linux系统上,请检查/dev/shm。

票数 3
EN

Stack Overflow用户

发布于 2020-04-13 20:56:10

在我的例子中,解决方案是使用sudo

代码语言:javascript
复制
sudo ipcs -m
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15660812

复制
相关文章

相似问题

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