IPC::Semaphore - SysV Semaphore IPC object class
| Use Case | Command | Description |
|---|---|---|
| Create semaphore set | $sem = IPC::Semaphore->new($key, $nsems, $flags) | Create a set with a key, number of semaphores, and access flags |
| Get all values | @values = $sem->getall | Return all semaphore values as an array |
| Get wait count (increase) | $ncnt = $sem->getncnt($sem_num) | Number of processes waiting for semaphore to become greater |
| Get PID of last operation | $pid = $sem->getpid($sem_num) | PID of last process that performed an operation on the semaphore |
| Get current value | $val = $sem->getval($sem_num) | Current value of a specific semaphore |
| Get wait count (zero) | $zcnt = $sem->getzcnt($sem_num) | Number of processes waiting for semaphore to become zero |
| Perform operations | $sem->op(@oplist) | Pass a list of semaphore operations (number, operation, flags) |
| Set all values | $sem->setall(@values) | Set every semaphore in the set at once |
| Set a single value | $sem->setval($n, $value) | Set the value of semaphore N |
| Get stat object | $ds = $sem->stat | Return an object with uid, gid, mode, etc. |
| Remove semaphore set | $sem->remove | Destroy and remove the semaphore set from the system |
use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR IPC_CREAT);
use IPC::Semaphore;
$sem = IPC::Semaphore->new(IPC_PRIVATE, 10, S_IRUSR | S_IWUSR | IPC_CREAT);
$sem->setall( (0) x 10);
@sem = $sem->getall;
$ncnt = $sem->getncnt;
$zcnt = $sem->getzcnt;
$ds = $sem->stat;
$sem->remove;
A class providing an object based interface to SysV IPC semaphores.
new(KEY, NSEMS, FLAGS) — Create a new semaphore set associated with KEY. NSEMS is the number of semaphores in the set. A new set is created if:
KEY is equal to IPC_PRIVATEKEY does not already have a semaphore identifier associated with it, and FLAGS & IPC_CREAT is true.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.getall — Returns the values of the semaphore set as an array.getncnt(SEM) — Returns the number of processes waiting for the semaphore SEM to become greater than its current value.getpid(SEM) — Returns the process id of the last process that performed an operation on the semaphore SEM.getval(SEM) — Returns the current value of the semaphore SEM.getzcnt(SEM) — Returns the number of processes waiting for the semaphore SEM to become zero.id — Returns the system identifier for the semaphore set.op(OPLIST) — OPLIST is a list of operations to pass to semop. OPLIST is a concatenation of smaller lists, each which has three values. The first is the semaphore number, the second is the operation and the last is a flags value. See semop(2) for more details. For example:
$sem->op(
0, -1, IPC_NOWAIT,
1, 1, IPC_NOWAIT
);
remove — Remove and destroy the semaphore set from the system.set(STAT) or set(NAME => VALUE, ...) — set will set the following values of the stat structure associated with the semaphore set.
uid,
gid,
mode (only the permission bits).
set accepts either a stat object, as returned by the stat method, or a list of name-value pairs.setall(VALUES) — Sets all values in the semaphore set to those given on the VALUES list. VALUES must contain the correct number of values.setval(N, VALUE) — Set the Nth value in the semaphore set to VALUE.stat — Returns an object of type IPC::Semaphore::stat which is a sub-class of Class::Struct. It provides the following fields. For a description of these fields see your system documentation.
uid, gid, cuid, cgid, mode, ctime, otime, nsems.IPC::SysV, Class::Struct, semget(2), semctl(2), semop(2)
Graham Barr <gbarr AT pobox.com>, Marcus Holland-Moritz <mhx AT cpan.org>
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.
Generated by phpman v4.9.27 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-07-18 10:43 @216.73.216.114
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format