sigpause(2) - Linux 手册页

名称

sigpause - 原子地释放阻塞的信号并等待中断

概要

#include <signal.h>
int sigpause(int sigmask);  /* BSD */
int sigpause(int sig);      /* Unix95 */

描述

不要使用此函数。请使用 sigsuspend(2) 代替。

函数 sigpause 被设计用来等待某个信号。它会更改进程的信号掩码(阻塞的信号集合),然后等待信号到达。当信号到达时,原始信号掩码会被恢复。

返回值

如果 sigpause 返回,则表示它被信号中断,返回值是 -1,并且 errno 被设置为 EINTR

历史

这个函数的经典 BSD 版本出现在 4.2BSD 中。它将进程的信号掩码设置为 sigmask。当信号的数量增加到超过 32 个时,这个版本被不兼容的 Unix95 版本取代,该版本只会从进程的信号掩码中移除指定的信号 sig。 两个具有相同名称的不兼容函数的糟糕情况通过 sigsuspend(2) 函数解决,该函数接受一个 sigset_t * 参数(而不是一个 int)。

在 Linux 上,这个例程仅在 Sparc (sparc64) 架构上是系统调用。Libc4 和 libc5 仅了解 BSD 版本。Glibc 除非定义了 _XOPEN_SOURCE,否则使用 BSD 版本。

参见

kill(2), sigaction(2), sigblock(2), sigprocmask(2), sigsuspend(2), sigvec(2)