sigsetops(3) - Linux 手册页
名称
sigemptyset, sigfillset, sigaddset, sigdelset, sigismember - POSIX 信号集操作。
概要
#include <signal.h>
int sigemptyset(sigset_t *set);
int sigfillset(sigset_t *set);
int sigaddset(sigset_t *set, int signum);
int sigdelset(sigset_t *set, int signum);
int sigismember(const sigset_t *set, int signum);
glibc 的功能测试宏要求(参见 feature_test_macros(7))
- sigemptyset(), sigfillset(), sigaddset(), sigdelset(), sigismember()
- _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
描述
这些函数允许操作 POSIX 信号集。
sigemptyset() 将由 set 给定的信号集初始化为空,所有信号都不包含在该集合中。
sigfillset() 将 set 初始化为满,包含所有信号。
sigaddset() 和 sigdelset() 分别将信号 signum 添加到和从 set 中删除。
sigismember() 测试 signum 是否是 set 的成员。
sigset_t 类型的对象必须在使用 sigaddset()、sigdelset() 和 sigismember() 函数或下面描述的 glibc 附加函数(sigisemptyset()、sigandset() 和 sigorset())传递之前,通过调用 sigemptyset() 或 sigfillset() 进行初始化。 如果没有这样做,结果是未定义的。
返回值
sigemptyset()、sigfillset()、sigaddset() 和 sigdelset() 成功时返回 0,出错时返回 -1。
sigismember() 如果 signum 是 set 的成员,则返回 1,如果 signum 不是成员,则返回 0,出错时返回 -1。
错误
- EINVAL
sig 不是有效的信号。
符合
POSIX.1-2001。
说明
Glibc 注释
- 如果定义了 _GNU_SOURCE 特性测试宏,则 <signal.h> 会暴露另外三个用于操作信号集的函数。
- int sigisemptyset(sigset_t *set);
- 如果 set 不包含任何信号,则返回 1,否则返回 0。
- int sigorset(sigset_t *dest, sigset_t *left, sigset_t *right);
- 将集合 left 和 right 的并集放入 dest 中。
- int sigandset(sigset_t *dest, sigset_t *left, sigset_t *right);
- 将集合 left 和 right 的交集放入 dest 中。
- sigorset() 和 sigandset() 成功时返回 0,失败时返回 -1。
这些函数是非标准的(少数其他系统提供类似函数),不应在可移植应用程序中使用。
参见
sigaction(2), sigpending(2), sigprocmask(2), sigsuspend(2)