waitsem, nbwaitsem -- awaits and checks access to a semaphore-governed resource


cc ... -lx

int waitsem (sem_num)
int sem_num;

int nbwaitsem (sem_num) int sem_num;


waitsem- gives access to a semaphore-governed resource

nbwaitsem- waits for access to a semaphore-governed resource

waitsem gives the calling process access to the resource governed by the semaphore sem_num. If the resource is in use by another process, waitsem puts the process to sleep until the resource becomes available; nbwaitsem returns the error ENAVAIL. waitsem and nbwaitsem are used in conjunction with sigsem to allow synchronization of processes wishing to access a resource. One or more processes may wait on the given semaphore (using waitsem) and are put to sleep until the process that currently has access to the resource issues sigsem. sigsem causes the next process in line on the semaphore's queue to be rescheduled for execution. The semaphore's queue is organized in first in first out FIFO order.

System compatibility

waitsem can only be used to synchronize semaphores created under UNIX Version 3, not for UNIX System V semaphores.


waitsem returns the value (int) -1 if an error occurs. If sem_num has not been previously opened by a call to opensem or creatsem, errno is set to EBADF. If sem_num does not refer to a semaphore type file, errno is set to ENOTNAM. All processes waiting (or attempting to wait) on the semaphore return with errno set to ENAVAIL when the process controlling the semaphore exits without relinquishing control (thereby leaving the resource in an undeterminate state). If a process does two calls to waitsem in a row without doing an intervening sigsem, errno is set to EINVAL.


This feature is a XENIX specific enhancement and may not be present in all UNIX implementations. This routine must be linked with the linker option -lx.

See also

creatsem(S), opensem(S), sigsem(S)

Standards conformance

waitsem and nbwaitsem are not part of any currently supported standard; they are an extension of AT&T System V provided by the Santa Cruz Operation.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003