我正在尝试使用共享内存/C++ 进行编程。 我有多个进程访问共享内存片段,然后在执行过程中取消链接,并在完成前一个片段后链接到另一个片段。
一切正常,除了当我列出 ls /dev/shm 时它是空的,但是当我 df /dev/shm 时它说空间已消耗,为什么呢?
如果您使用
shm_unlink()
,请记住 shm_unlink()
:
"删除字符串命名的共享内存对象的名称 按名字指出。”
但是
“内存对象内容的删除应推迟到 所有对共享内存对象的打开和映射引用都已被 已删除。”
(如手册页中所述)
因此,您可能看不到任何
ls
的内容,但您仍然看到使用 df
占用的内存。