sem_wait(3C)
sem_wait, sem_trywait - acquire a posix named or unnamed semaphore
As shipped in IRIX 6.5.30. Unchanged since IRIX 6.5.
NAME sem_wait, sem_trywait - acquire a posix named or unnamed semaphore SYNOPSIS #include <semaphore.h> int sem_wait(sem_t *sem); int sem_trywait(sem_t *sem); DESCRIPTION sem_wait atomically decrements the value of the semaphore located at address sem. If the semaphore's value is less than zero after the decrement, the calling process blocks on the semaphore. Otherwise, the calling process continues without blocking. A process blocked on a semaphore remains blocked until either another process posts the semaphore via sem_post, or the sem_wait operation is interrupted by a signal. sem_trywait atomically decrements the semaphore only if the resulting value is greater than or equal to zero. This way, the sem_trywait function will never cause the calling process to block on the semaphore. The address sem may reside anywhere in the calling processes address space, but the process must have read and write access to sem. sem_wait or sem_trywait will fail if one or more of the following are true: [EAGAIN] sem_trywait will generate this error if the semaphore was not available. [EDEADLK] A deadlock condition was detected. [EINVAL] The semaphore located at address sem is not a valid posix named or unnamed semaphore. [EINTR] The operation was interrupted by a signal. SEE ALSO sem_init(3C), sem_destroy(3C), sem_getvalue(3C), sem_post(3C), sem_wait(3C), sem_trywait(3C), sem_open(3C), sem_close(3C), sem_unlink(3C), DIAGNOSTICS Upon successful completion, a value of 0 is returned to the calling process. Otherwise, a value of -1 is returned and errno is set to indicate the error.