IPC::SharedMem - SysV 共享内存 IPC 对象类
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;
一个提供基于对象的接口来访问 SysV IPC 共享内存的类。
创建一个新的共享内存段,大小为 SIZE
字节,与 KEY
关联。如果以下条件满足,则会创建一个新的段:
KEY
等于 IPC_PRIVATE
KEY
尚未与共享内存段关联,并且 FLAGS & IPC_CREAT
为真。
在创建新的共享内存段时,FLAGS
用于设置权限。注意不要设置 Sys V IPC 实现不允许的任何标志:在某些系统中,设置执行位会导致操作失败。
返回共享内存标识符。
从共享内存段的 POS
位置读取 SIZE
字节。返回读取的字符串,如果发生错误则返回 undef
。返回值会被标记为不安全。参见 shmread。
将 SIZE
字节写入共享内存段的 POS
位置。如果成功则返回真,如果发生错误则返回假。参见 shmwrite。
从系统中移除共享内存段,或者将其标记为已移除,只要任何进程仍然附加到它。
如果共享内存段已被移除或标记为已移除,则返回 true。
返回一个类型为 IPC::SharedMem::stat
的对象,它是 Class::Struct
的子类。它提供以下字段。有关这些字段的描述,请参阅您的系统文档。
uid
gid
cuid
cgid
mode
segsz
lpid
cpid
nattch
atime
dtime
ctime
永久附加到共享内存段。当一个 IPC::SharedMem
对象被附加时,它将使用 memread 和 memwrite 而不是 shmread 和 shmwrite 来访问共享内存段。如果成功,则返回 true,否则返回 false。参见 shmat(2).
从之前已附加的共享内存段分离。如果成功,则返回 true,否则返回 false。参见 shmdt(2).
返回已附加的共享内存的地址,格式适合使用 pack('P')
。如果共享内存未附加,则返回 undef
。
Marcus Holland-Moritz <[email protected]>
版本 2.x,版权所有 (C) 2007-2013,Marcus Holland-Moritz。
版本 1.x,版权所有 (c) 1997,Graham Barr。
本程序是自由软件;您可以根据与 Perl 本身相同的条款重新分发和/或修改它。