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() 如果 signumset 的成员,则返回 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);
将集合 leftright 的并集放入 dest 中。
int sigandset(sigset_t *dest, sigset_t *left, sigset_t *right);
将集合 leftright 的交集放入 dest 中。
sigorset() 和 sigandset() 成功时返回 0,失败时返回 -1。

这些函数是非标准的(少数其他系统提供类似函数),不应在可移植应用程序中使用。

参见

sigaction(2), sigpending(2), sigprocmask(2), sigsuspend(2)

引用自

pthread_sigmask(3), signal(2), signal(7), signalfd(2), sigtimedwait(2), sigwait(3)