簡體   English   中英

ipcs 不顯示我的共享內存和信號量

[英]ipcs doesn't show my shared memory and semaphores

我使用適當的標志打開共享內存和信號量:

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 和插件容器(firefox 的)相關。 我檢查了他們

grep shmid /proc/*/maps     # observe pid
readlink /proc/pid/exe

Ipcs 僅報告 System V 共享內存。 您必須使用 Posix 共享內存。 顯然這是兩種完全不同的機制。 Posix shm 顯示在 /dev/shm 下。

我遇到了同樣的問題,接受的答案不夠令人滿意,因為它沒有解釋為什么會發生這種情況。 我在另一個類似的問題中找到了答案: 我看不到 boost::interprocess 通過 shell 命令 ipcs 創建的共享內存

“據我所知,ipcs 只報告 System V 共享內存。POSIX 共享內存是一個單獨的區域,必須單獨查詢。在 linux 系統上,檢查 /dev/shm。”

我剛剛發現的一種解決方案是共享內存和共享信號量列在下面:

/dev/shm

那里的文件對於了解有哪些共享對象以及unlink它們很有用,但除此之外,它們不提供任何有用的信息(如ipcs所做的那樣)。

就我而言,解決方案是使用sudo

sudo ipcs -m

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM