---
name: "sigwait"
section: "2"
platform: "linux"
package: "freebsd-manpages"
version: "6.0-5"
release: "Debian 4.0 (Etch)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/sigwait"
---

# sigwait(2)

select a set of signals

## NAME

**sigwait** – select a set of signals

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<signal.h\>**

*int*\

**sigwait**(*const sigset\_t \* restrict set*, *int \* restrict sig*);

## DESCRIPTION

The **sigwait**() system call selects a set of signals, specified by *set*. If none of the selected signals are pending, **sigwait**() waits until one or more of the selected signals has been generated. Then **sigwait**() atomically clears one of the selected signals from the set of pending signals for the process and sets the location pointed to by *sig* to the signal number that was cleared.

The signals specified by *set* should be blocked at the time of the call to **sigwait**().

## RETURN VALUES

If successful, **sigwait**() returns 0 and sets the location pointed to by *sig* to the cleared signal number. Otherwise, an error number is returned.

## ERRORS

The **sigwait**() system call will fail if:

- \[EINVAL\]

  The *set* argument specifies one or more invalid signal numbers.

## SEE ALSO

[sigaction(2)](/sigaction/2.md), [sigpending(2)](/sigpending/2.md), [sigsuspend(2)](/sigsuspend/2.md), [pause(3)](/pause/3.md), [pthread\_sigmask(3)](/pthread_sigmask/3.md)

## STANDARDS

The **sigwait**() function conforms to ISO/IEC 9945-1:1996 (“POSIX.1”).
