NAME
SysV::SharedMem - SysV Shared memory made easy
VERSION
version 0.010
SYNOPSIS
use SysV::SharedMem;
shared_open my $mem, '/path', '+>', size => 4096;
vec($mem, 1, 16) = 34567;
substr $mem, 45, 11, 'Hello World';
DESCRIPTION
This module maps SysV shared memory into a variable that can be read just like any other variable, and it can be written to using standard Perl techniques such as regexps and substr
, as long as they don't change the length of the variable.
FUNCTIONS
shared_open($var, $filename, $mode, %options)
Open a shared memory object named $filename
and attach it to $var
. The segment that will be opened is determined with this order of precedence: $options{id}
, $options{key}
, $filename
, IPC_PRIVATE
(create a new anonymous segment).
$filename must be the path to an existing file if defined. $mode
determines the read/write mode; it works the same as in open.
Beyond that it can take a number of optional named arguments:
id
The option is defined is specifies the shared memory identifier that will be opened. It overrides both
$options{key}
and$filename
.key
If
$options{id}
is undefined this parameter is used as the key to lookup the shared memory segment.size
This determines the size of the map. Must be set if a new shared memory object is being created.
perms
This determines the permissions with which the segment is created (if
$mode
is '>' or '+>'). Default is 0600.offset
This determines the offset in the file that is mapped. Default is 0.
proj_id
The project id, used to ensure the key generated from
$filename
is unique. Only the lower 8 bits are significant and may not be zero. Defaults to 1.
shared_remove($var)
Marks a memory object to be removed. Shared memory has kernel persistence so it has to be explicitly disposed of. One can still use the object after marking it for removal.
shared_stat($var)
Retrieve the properties of the shared memory object. It returns a hashref with these members:
uid
Owner's user ID
gid
Owner's group ID
cuid
Creator's user ID
cgid
Creator's group ID
mode
Read/write permission
segsz
Size of segment in bytes
lpid
Process ID of last shared memory operation
cpid
Process ID of creator
nattch
Number of current attaches
atime
Time of last attachment
dtime
Time of last detachment
ctime
Time of last of control structure
shared_chmod($var, $modebits)
Change the (lower 9) modebits of the shared memory object.
shared_chown($var, $uid, $gid = undef)
Change the owning uid and optionally gid of the shared memory object.
shared_detach($var)
Detach the shared memory segment from this variable.
shared_identifier
Return the identifier for this shared memory segment
AUTHOR
Leon Timmermans <leont@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Leon Timmermans.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.