```{index} single: IPC::SharedMem ``` # IPC::SharedMem SysV Shared Memory IPC object class ## SYNOPSIS ```perl use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR); use IPC::SharedMem; $shm = IPC::SharedMem->new(IPC_PRIVATE, 8, S_IRWXU); $shm->write(pack("S", 4711), 2, 2); $data = $shm->read(0, 2); $ds = $shm->stat; $shm->remove; ``` ## DESCRIPTION A class providing an object based interface to SysV IPC shared memory. ## METHODS - new ( KEY , SIZE , FLAGS ) Creates a new shared memory segment of `SIZE` bytes size associated with `KEY`. A new segment is created if - `KEY` is equal to `IPC_PRIVATE` - `KEY` does not already have a shared memory segment associated with it, and `_FLAGS_ & IPC_CREAT` is true. On creation of a new shared memory segment `FLAGS` is used to set the permissions. Be careful not to set any flags that the Sys V IPC implementation does not allow: in some systems setting execute bits makes the operations fail. - id Returns the shared memory identifier. - read ( POS, SIZE ) Read `SIZE` bytes from the shared memory segment at `POS`. Returns the string read, or `undef` if there was an error. The return value becomes tainted. See [shmread](https://metacpan.org/pod/shmread). - write ( STRING, POS, SIZE ) Write `SIZE` bytes to the shared memory segment at `POS`. Returns true if successful, or false if there is an error. See [shmwrite](https://metacpan.org/pod/shmwrite). - remove Remove the shared memory segment from the system or mark it as removed as long as any processes are still attached to it. - is\_removed Returns true if the shared memory segment has been removed or marked for removal. - stat Returns an object of type `IPC::SharedMem::stat` which is a sub-class of `Class::Struct`. It provides the following fields. For a description of these fields see you system documentation. ```text uid gid cuid cgid mode segsz lpid cpid nattch atime dtime ctime ``` - attach ( \[FLAG\] ) Permanently attach to the shared memory segment. When a `IPC::SharedMem` object is attached, it will use [memread](https://metacpan.org/pod/memread) and [memwrite](https://metacpan.org/pod/memwrite) instead of [shmread](https://metacpan.org/pod/shmread) and [shmwrite](https://metacpan.org/pod/shmwrite) for accessing the shared memory segment. Returns true if successful, or false on error. See [shmat(2)](http://man.he.net/man2/shmat). - detach Detach from the shared memory segment that previously has been attached to. Returns true if successful, or false on error. See [shmdt(2)](http://man.he.net/man2/shmdt). - addr Returns the address of the shared memory that has been attached to in a format suitable for use with `pack('P')`. Returns `undef` if the shared memory has not been attached. ## SEE ALSO [IPC::SysV](SysV.md), [Class::Struct](../Class/Struct.md) ## AUTHORS Marcus Holland-Moritz ## COPYRIGHT Version 2.x, Copyright (C) 2007-2013, Marcus Holland-Moritz. Version 1.x, Copyright (c) 1997, Graham Barr. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.