SHM
共有メモリを用いた高速で扱いやすいプロセス間通信マネージャ
Classes | Enumerations | Functions | Variables
shm_base.hpp File Reference

共有メモリへのアクセス方法やリングバッファなどの基本的なクラスの定義 More...

#include <iostream>
#include <limits>
#include <string>
#include <regex>
#include <stdexcept>
#include <mutex>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/time.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>

Go to the source code of this file.

Classes

class  irlab::shm::SharedMemory
 共有メモリへのアクセス方法を抽象化したクラス More...
 
class  irlab::shm::SharedMemoryPosix
 Posix方式の共有メモリのアクセス方法を記述したクラス More...
 
class  irlab::shm::RingBuffer
 共有メモリで使用するリングバッファを記述したクラス More...
 

Enumerations

enum  irlab::shm::PERM : mode_t {
  irlab::shm::PERM_USER_READ = S_IRUSR, irlab::shm::PERM_USER_WRITE = S_IWUSR, irlab::shm::PERM_GROUP_READ = S_IRGRP, irlab::shm::PERM_GROUP_WRITE = S_IWGRP,
  irlab::shm::PERM_OTHER_READ = S_IROTH, irlab::shm::PERM_OTHER_WRITE = S_IWOTH
}
 

Functions

int irlab::shm::disconnectMemory (std::string name)
 共有メモリを破棄する(POSIX版) More...
 
int irlab::shm::disconnectMemory (int id)
 

Variables

const PERM irlab::shm::DEFAULT_PERM = static_cast<PERM>(PERM_USER_READ | PERM_USER_WRITE | PERM_GROUP_READ | PERM_GROUP_WRITE | PERM_OTHER_READ | PERM_OTHER_WRITE)
 

Detailed Description

共有メモリへのアクセス方法やリングバッファなどの基本的なクラスの定義

Note
記法はROSに準拠する http://wiki.ros.org/ja/CppStyleGuide

Definition in file shm_base.hpp.

Enumeration Type Documentation

◆ PERM

enum irlab::shm::PERM : mode_t

共有メモリに付与する権限を表す

Enumerator
PERM_USER_READ 

所有者の読み込み許可

PERM_USER_WRITE 

所有者の書き込み許可

PERM_GROUP_READ 

所有者のグループの読み込み許可

PERM_GROUP_WRITE 

所有者のグループの書き込み許可

PERM_OTHER_READ 

その他の読み込み許可

PERM_OTHER_WRITE 

その他の書き込み許可

Definition at line 40 of file shm_base.hpp.

Function Documentation

◆ disconnectMemory()

int irlab::shm::disconnectMemory ( std::string  name)

共有メモリを破棄する(POSIX版)

Parameters
[in]name共有メモリ名
Returns
なし

この関数では、引数で与えられた共有メモリ名の共有メモリを破棄する. 破棄すると言ってもファイルの削除と同様に、すでにプログラムで展開されている場合は、 破棄された共有メモリにアクセスし続けることができる. 破棄後に同名の共有メモリを作成した場合、新しいアドレスが生成されるため、 再度サブスクライバを生成しないと新しい共有メモリにアクセスできない. ファイルディスクリプタを保持し、inodeのカウントを監視することで、 共有メモリの破棄を検知することができるが、むやみに共有メモリを破棄することがないことを前提として、 余計な処理を加えないためにあえて共有メモリの監視はしていない。

Definition at line 21 of file shared_memory.cpp.