内容

名称

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 共享内存的类。

方法

new ( KEY , SIZE , FLAGS )

创建一个新的共享内存段,大小为 SIZE 字节,与 KEY 关联。如果以下条件满足,则会创建一个新的段:

  • KEY 等于 IPC_PRIVATE

  • KEY 尚未与共享内存段关联,并且 FLAGS & IPC_CREAT 为真。

在创建新的共享内存段时,FLAGS 用于设置权限。注意不要设置 Sys V IPC 实现不允许的任何标志:在某些系统中,设置执行位会导致操作失败。

id

返回共享内存标识符。

read ( POS, SIZE )

从共享内存段的 POS 位置读取 SIZE 字节。返回读取的字符串,如果发生错误则返回 undef。返回值会被标记为不安全。参见 shmread

write ( STRING, POS, SIZE )

SIZE 字节写入共享内存段的 POS 位置。如果成功则返回真,如果发生错误则返回假。参见 shmwrite

remove

从系统中移除共享内存段,或者将其标记为已移除,只要任何进程仍然附加到它。

is_removed

如果共享内存段已被移除或标记为已移除,则返回 true。

stat

返回一个类型为 IPC::SharedMem::stat 的对象,它是 Class::Struct 的子类。它提供以下字段。有关这些字段的描述,请参阅您的系统文档。

uid
gid
cuid
cgid
mode
segsz
lpid
cpid
nattch
atime
dtime
ctime
attach ( [FLAG] )

永久附加到共享内存段。当一个 IPC::SharedMem 对象被附加时,它将使用 memreadmemwrite 而不是 shmreadshmwrite 来访问共享内存段。如果成功,则返回 true,否则返回 false。参见 shmat(2).

detach

从之前已附加的共享内存段分离。如果成功,则返回 true,否则返回 false。参见 shmdt(2).

addr

返回已附加的共享内存的地址,格式适合使用 pack('P')。如果共享内存未附加,则返回 undef

SEE ALSO

IPC::SysV, Class::Struct

AUTHORS

Marcus Holland-Moritz <[email protected]>

COPYRIGHT

版本 2.x,版权所有 (C) 2007-2013,Marcus Holland-Moritz。

版本 1.x,版权所有 (c) 1997,Graham Barr。

本程序是自由软件;您可以根据与 Perl 本身相同的条款重新分发和/或修改它。