sem_wait, sem_trywait - Performs (or conditionally performs)
a semaphore lock (P1003.1b)
int sem_wait ( sem_t *sem);
int sem_trywait ( sem_t *sem)
Realtime Library (librt.so, librt.a)
Specifies a pointer to the semaphore to be locked.
The sem_wait function locks the semaphore referenced by
sem by performing a semaphore lock operation on it. If the
semaphore value is zero, the sem_wait function blocks
until it either locks the semaphore or is interrupted by a
The sem_trywait function locks a semaphore only if the
semaphore is currently not locked. If the semaphore value
is zero, the sem_trywait function returns without locking
These functions help ensure that the resource associated
with the semaphore cannot be accessed by other processes.
The semaphore remains locked until the process unlocks it
with a call to the sem_post function.
Use the sem_wait function instead of the sem_trywait function
if the process should wait for access to the
If the sem_wait or sem_trywait function returns successfully,
a value of 0 (zero) is returned and the function
executes the semaphore lock operation.
On an unsuccessful call, a value of -1 is returned and
errno is set to indicate that an error occurred. The state
of the semaphore remains unchanged.
The sem_wait and sem_trywait functions fail under the following
conditions: The semaphore was already locked and
cannot be locked by the sem_trywait operation (sem_trywait
only). A signal interrupted this function. The sem
argument does not refer to a valid semaphore.
Guide to Realtime Programming
[ Back ]