```{index} single: IPC::Semaphore ``` # IPC::Semaphore SysV Semaphore IPC object class ## SYNOPSIS ```perl 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; ``` ## DESCRIPTION A class providing an object based interface to SysV IPC semaphores. ## METHODS - 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_PRIVATE` - `KEY` does not already have a semaphore identifier associated with it, and `_FLAGS_ & IPC_CREAT` is true. On creation of a new semaphore set `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)](http://man.he.net/man2/semop) for more details. For example ```perl $sem->op( 0, -1, IPC_NOWAIT, 1, 1, IPC_NOWAIT ); ``` - remove Remove and destroy the semaphore set from the system. - set ( STAT ) - set ( NAME => VALUE \[, NAME => VALUE ...\] ) `set` will set the following values of the `stat` structure associated with the semaphore set. ```text 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 `N`th 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. ```text uid gid cuid cgid mode ctime otime nsems ``` ## SEE ALSO [IPC::SysV](SysV.md), [Class::Struct](../Class/Struct.md), [semget(2)](http://man.he.net/man2/semget), [semctl(2)](http://man.he.net/man2/semctl), [semop(2)](http://man.he.net/man2/semop) ## AUTHORS Graham Barr , 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.