// Copyright (c) 1999-2000 David Muse // See the COPYING file for more information. #ifndef SHAREDMEMORY_H #define SHAREDMEMORY_H #include <pwd.h> #include <grp.h> #include <sys/types.h> // Shared memory segments allow multiple processes to access a common // address space. // // Shared memory can be used for interprocess communication and is generally // faster than using fifo's or unix sockets. // // To synchronize access to shared memory, use the semaphoreset class. // // A shared memory segment is owned by a user and group and has access // permissions just like a file. class sharedmemory { public: sharedmemory(key_t key, int size, mode_t permissions); // Creates and attaches to a shared memory // segment of "size" bytes, identified by // "key". // "key" should be generated using the ftok // function. // In the event that a segment identified by // "key" already exists, the process // just attaches to it. // "permissions" sets the access permissions // for the segment. virtual ~sharedmemory(); void *getPointer(); // Returns a pointer to the shared memory // segment. Data may be read from or written // to the segment using this pointer. int setUserName(char *username); // makes this shared memory segment owned by // the user "username" int setGroupName(char *groupname); // makes this shared memory segment owned by // the group "groupname" int setUserId(ushort uid); // makes this shared memory segment owned by // the user identified by uid int setGroupId(ushort gid); // makes this shared memory segment owned by // the group identified by gid int setPermissions(mode_t permissions); // sets the access permissions for this // shared memory segment to "permissions" char *getUserName(); // returns the name of the user that owns this // shared memory segment char *getGroupName(); // returns the name of the group that owns this // shared memory segment ushort getUserId(); // returns the user id of the user that owns this // shared memory segment ushort getGroupId(); // returns the group id of the group that owns this // shared memory segment mode_t getPermissions(); // returns the access permissions for this // shared memory segment private: #include <private/sharedmemory.h> }; #endif