SIGWAIT(3) | Library Functions Manual | SIGWAIT(3)

# NAME

`sigwait` — synchronously accept a signal

# SYNOPSIS

`#include <signal.h>`

int
`sigwait`(const sigset_t *set, int *sig);

# DESCRIPTION

The `sigwait`() function selects a pending signal from set, atomically clears it from the system's set of pending signals, and returns that signal number in the location referenced by sig. If prior to the call to `sigwait`() there are multiple pending instances of a single signal number, it is undefined whether upon successful return there are any remaining pending signals for that signal number. If no signal in set is pending at the time of the call, the thread shall be suspended until one or more becomes pending. The signals defined by set should have been blocked at the time of the call to `sigwait`(); otherwise the behaviour is undefined. The effect of `sigwait`() on the signal actions for the signals in set is unspecified.

If more than one thread is using `sigwait`() to wait for the same signal, no more than one of these threads shall return from `sigwait`() with the signal number. Which thread returns from `sigwait`() if more than a single thread is waiting is unspecified.

# RETURN VALUES

Upon successful completion, `sigwait`() stores the signal number of the received signal at the location referenced by sig and returns zero.

# ERRORS

On error, `sigwait`() returns one of these error values:

[`EINVAL`]
  The set argument contains an invalid or unsupported signal number.

# SEE ALSO

sigaction(2), sigpending(2), sigsuspend(2), pause(3), pthread_sigmask(3)

# STANDARDS

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

January 13, 2019 | Debian