January 22, 2003 SEM_WAIT 3

### NAME

sem_wait, sem_trywait - decrement (lock) a semaphore

### LIBRARY

POSIX Real-time Library (librt, -lrt)

### SYNOPSIS

```int` sem_wait(```sem_t *sem`)
```int` sem_trywait(```sem_t *sem`)

### DESCRIPTION

The sem_wait(``) function decrements (locks) the semaphore pointed to by ```sem`, but blocks if the value of ```sem` is zero, until the value is non-zero and the value can be decremented.

The sem_trywait(``) function decrements (locks) the semaphore pointed to by ```sem` only if the value is non-zero. Otherwise, the semaphore is not decremented and an error is returned.

### RETURN VALUES

### ERRORS

sem_wait(``) and sem_trywait(``) will fail if:

[```EINVAL`]
  ```sem` points to an invalid semaphore.

Additionally, sem_trywait(``) will fail if:

[```EAGAIN`]
  The semaphore value was zero, and thus could not be decremented.

### SEE ALSO

sem_post(3)

### STANDARDS

sem_wait(``) and sem_trywait(``) conform to ISO/IEC 9945-1:1996 (``POSIX.1'') .