boost::interprocess::shared_memory_object
// In header: <boost/interprocess/shared_memory_object.hpp> class shared_memory_object { public: // public member functions shared_memory_object() noexcept; shared_memory_object(create_only_t, const char *, mode_t, const permissions & = permissions()); shared_memory_object(open_or_create_t, const char *, mode_t, const permissions & = permissions()); shared_memory_object(open_only_t, const char *, mode_t); shared_memory_object(create_only_t, const wchar_t *, mode_t, const permissions & = permissions()); shared_memory_object(open_or_create_t, const wchar_t *, mode_t, const permissions & = permissions()); shared_memory_object(open_only_t, const wchar_t *, mode_t); shared_memory_object(shared_memory_object &&) noexcept; shared_memory_object & operator=(shared_memory_object &&) noexcept; void swap(shared_memory_object &) noexcept; void truncate(offset_t); ~shared_memory_object(); const char * get_name() const noexcept; bool get_size(offset_t &) const noexcept; mode_t get_mode() const noexcept; mapping_handle_t get_mapping_handle() const noexcept; // public static functions static bool remove(const char *); static bool remove(const wchar_t *); };
一个类,它封装了共享内存映射,可用于从映射文件创建映射区域
shared_memory_object
公有成员函数shared_memory_object() noexcept;默认构造函数。表示一个空的 shared_memory_object。
shared_memory_object(create_only_t, const char * name, mode_t mode, const permissions & perm = permissions());
使用名称 "name" 和模式 "mode" 创建共享内存对象,访问模式为 "mode"。如果文件先前存在,则抛出错误。*<zwj></zwj>/
shared_memory_object(open_or_create_t, const char * name, mode_t mode, const permissions & perm = permissions());
尝试使用名称 "name" 和模式 "mode" 创建共享内存对象,访问模式为 "mode"。如果文件先前存在,则尝试以模式 "mode" 打开它。否则抛出错误。
shared_memory_object(open_only_t, const char * name, mode_t mode);
尝试以模式 "mode" 打开具有名称 "name" 的共享内存对象。如果文件先前不存在,则抛出错误。
shared_memory_object(create_only_t, const wchar_t * name, mode_t mode, const permissions & perm = permissions());
使用名称 "name" 和模式 "mode" 创建共享内存对象,访问模式为 "mode"。如果文件先前存在,则抛出错误。
注意:此功能仅在具有原生 wchar_t API 的操作系统(例如 Windows)上可用。
shared_memory_object(open_or_create_t, const wchar_t * name, mode_t mode, const permissions & perm = permissions());
尝试使用名称 "name" 和模式 "mode" 创建共享内存对象,访问模式为 "mode"。如果文件先前存在,则尝试以模式 "mode" 打开它。否则抛出错误。
注意:此功能仅在具有原生 wchar_t API 的操作系统(例如 Windows)上可用。
shared_memory_object(open_only_t, const wchar_t * name, mode_t mode);
尝试以模式 "mode" 打开具有名称 "name" 的共享内存对象。如果文件先前不存在,则抛出错误。
注意:此功能仅在具有原生 wchar_t API 的操作系统(例如 Windows)上可用。
shared_memory_object(shared_memory_object && moved) noexcept;
将 "moved" 的共享内存对象的所有权移动到 *this。调用后,"moved" 不再表示任何共享内存对象。不抛出异常
shared_memory_object & operator=(shared_memory_object && moved) noexcept;
将 "moved" 的共享内存的所有权移动到 *this。调用后,"moved" 不再表示任何共享内存。不抛出异常
void swap(shared_memory_object & moved) noexcept;交换 shared_memory_objects。不抛出异常。
void truncate(offset_t length);设置共享内存映射的大小。
~shared_memory_object();
销毁 *this 并指示调用进程已完成使用该资源。所有映射区域在销毁后仍然有效。析构函数将释放系统为该进程为此资源分配的任何系统资源。资源仍然可以通过调用 open 构造函数重载再次打开。要从系统中删除资源,请使用 remove()。
const char * get_name() const noexcept;返回共享内存对象的名称。
bool get_size(offset_t & size) const noexcept;
如果可以获取共享内存对象的大小,则返回 true,并将大小写入传递的引用
mode_t get_mode() const noexcept;返回访问模式。
mapping_handle_t get_mapping_handle() const noexcept;返回映射句柄。永不抛出异常。