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

# sigpause(2)

atomically release blocked signals and wait for interrupt

## NAME

sigpause - atomically release blocked signals and wait for interrupt

## SYNOPSIS

```
#include <signal.h>

int sigpause(int sigmask);  /* BSD */

int sigpause(int sig);      /* Unix95 */
```

## DESCRIPTION

Don't use this function. Use [**sigsuspend**(2)](/sigsuspend/2.md) instead.

The function **sigpause**() is designed to wait for some signal. It changes the process' signal mask (set of blocked signals), and then waits for a signal to arrive. Upon arrival of a signal, the original signal mask is restored.

## RETURN VALUE

If **sigpause**() returns, it was interrupted by a signal and the return value is -1 with *errno* set to **EINTR**.

## HISTORY

The classical BSD version of this function appeared in 4.2BSD. It sets the process' signal mask to *sigmask*. When the number of signals was increased above 32, this version was replaced by the incompatible Unix95 one, which removes only the specified signal *sig* from the process' signal mask. The unfortunate situation with two incompatible functions with the same name was solved by the [**sigsuspend**(2)](/sigsuspend/2.md) function, that takes a **sigset\_t \*** parameter (instead of an int).

On Linux, this routine is a system call only on the Sparc (sparc64) architecture. Libc4 and libc5 only know about the BSD version. Glibc uses the BSD version unless \_XOPEN\_SOURCE is defined.

## SEE ALSO

[**kill**(2)](/kill/2.md), [**sigaction**(2)](/sigaction/2.md), [**sigblock**(2)](/sigblock/2.md), [**sigprocmask**(2)](/sigprocmask/2.md), [**sigsuspend**(2)](/sigsuspend/2.md), [**sigvec**(2)](/sigvec/2.md)
