【发布时间】:2020-10-23 07:09:06
【问题描述】:
我正在使用 boost 库为我的 C++ 程序开发 IPC,我发现如果我请求的内存大小大于其容量,boost::shared_memory_object 不会引发任何错误。这个问题在堆栈溢出时至少被问过两次:
Why I can create a shared memory bigger than the size mounted on /dev/shm using POSIX?
和
How to get information about free memory from /dev/shm
正如第一个问题的答案所说,没有直接的方法可以确保您不会耗尽共享内存。我唯一的选择是在请求共享内存之前检查可用内存大小。但是,从问题
how do i change the shm_open path?
一个答案说共享内存的目录可以是/dev/shm 或/var/run/shm(或者我猜的任何其他内容)。通过查看shm_overview,我们还可以确认/dev/shm 不是唯一的路径,它只是常规路径。所以我的问题是:鉴于我们不确定shm_open 正在使用的共享内存的目录,我们如何知道 Linux 上共享内存的可用大小?
任何建议将不胜感激。
【问题讨论】: