Boost C++ 库

...世界上最受推崇和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

Class shared_memory_object

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 公有成员函数

  1. shared_memory_object() noexcept;
    默认构造函数。表示一个空的 shared_memory_object
  2. shared_memory_object(create_only_t, const char * name, mode_t mode, 
                         const permissions & perm = permissions());

    使用名称 "name" 和模式 "mode" 创建共享内存对象,访问模式为 "mode"。如果文件先前存在,则抛出错误。*<zwj></zwj>/

  3. shared_memory_object(open_or_create_t, const char * name, mode_t mode, 
                         const permissions & perm = permissions());

    尝试使用名称 "name" 和模式 "mode" 创建共享内存对象,访问模式为 "mode"。如果文件先前存在,则尝试以模式 "mode" 打开它。否则抛出错误。

  4. shared_memory_object(open_only_t, const char * name, mode_t mode);

    尝试以模式 "mode" 打开具有名称 "name" 的共享内存对象。如果文件先前不存在,则抛出错误。

  5. shared_memory_object(create_only_t, const wchar_t * name, mode_t mode, 
                         const permissions & perm = permissions());

    使用名称 "name" 和模式 "mode" 创建共享内存对象,访问模式为 "mode"。如果文件先前存在,则抛出错误。

    注意:此功能仅在具有原生 wchar_t API 的操作系统(例如 Windows)上可用。

  6. 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)上可用。

  7. shared_memory_object(open_only_t, const wchar_t * name, mode_t mode);

    尝试以模式 "mode" 打开具有名称 "name" 的共享内存对象。如果文件先前不存在,则抛出错误。

    注意:此功能仅在具有原生 wchar_t API 的操作系统(例如 Windows)上可用。

  8. shared_memory_object(shared_memory_object && moved) noexcept;

    将 "moved" 的共享内存对象的所有权移动到 *this。调用后,"moved" 不再表示任何共享内存对象。不抛出异常

  9. shared_memory_object & operator=(shared_memory_object && moved) noexcept;

    将 "moved" 的共享内存的所有权移动到 *this。调用后,"moved" 不再表示任何共享内存。不抛出异常

  10. void swap(shared_memory_object & moved) noexcept;
    交换 shared_memory_objects。不抛出异常。
  11. void truncate(offset_t length);
    设置共享内存映射的大小。
  12. ~shared_memory_object();

    销毁 *this 并指示调用进程已完成使用该资源。所有映射区域在销毁后仍然有效。析构函数将释放系统为该进程为此资源分配的任何系统资源。资源仍然可以通过调用 open 构造函数重载再次打开。要从系统中删除资源,请使用 remove()

  13. const char * get_name() const noexcept;
    返回共享内存对象的名称。
  14. bool get_size(offset_t & size) const noexcept;

    如果可以获取共享内存对象的大小,则返回 true,并将大小写入传递的引用

  15. mode_t get_mode() const noexcept;
    返回访问模式。
  16. mapping_handle_t get_mapping_handle() const noexcept;
    返回映射句柄。永不抛出异常。

shared_memory_object 公有静态函数

  1. static bool remove(const char * name);

    从系统中删除共享内存对象。发生错误时返回 false。永不抛出异常

  2. static bool remove(const wchar_t * name);

    从系统中删除共享内存对象。发生错误时返回 false。永不抛出异常

    注意:此功能仅在具有原生 wchar_t API 的操作系统(例如 Windows)上可用。


PrevUpHomeNext