SIGPAUSE - Linux手册页

时间:2019-08-20 18:01:20  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

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

语法

#include <signal.h>

int sigpause(int sigmask);  /* BSD (but see NOTES) */

int sigpause(int sig);      /* System V / UNIX 95 */

说明

不要使用此功能。请改用sigsuspend(2)。

函数sigpause()用于等待某些信号。它更改了进程的信号掩码(一组阻塞的信号),然后等待信号到达。信号到达后,将恢复原始信号掩码。

返回值

如果sigpause()返回,则它被信号中断,返回值是-1,errno设置为EINTR。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
sigpause()Thread safetyMT-Safe

遵循规范

sigpause()的System V版本在POSIX.1-2001中进行了标准化。它在POSIX.1-2008中也已指定,已标记为过时。

备注

History

此功能的经典BSD版本出现在4.2BSD中。它将进程的信号掩码设置为sigmask。 UNIX 95对该功能的不兼容System V版本进行了标准化,该版本仅从进程的信号掩码中除去指定的信号sig。 sigsuspend(2)函数解决了两个同名不兼容函数的不幸情况,该函数采用sigset_t *参数(而不是int)。

Linux notes

在Linux上,此例程是仅在Sparc(sparc64)体系结构上的系统调用。

如果定义了_BSD_SOURCE功能测试宏并且未定义_POSIX_SOURCE_POSIX_C_SOURCE_XOPEN_SOURCE,_GNU_SOURCE或_SVID_SOURCE,则Glibc将使用BSD版本。否则,将使用System V版本,并且必须如下定义功能测试宏才能获取声明:

*
从glibc 2.26开始:_XOPEN_SOURCE>= 500
*
Glibc 2.25和更早版本:_XOPEN_SOURCE

从glibc 2.19开始,仅System V版本由;公开。以前使用BSD sigpause()的应用程序应修改为使用sigsuspend(2)。

另外参见

kill(2),sigaction(2),sigprocmask(2),sigsuspend(2),sigblock(3),sigvec(3),feature_test_macros(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/