sigaddset ()-向信号掩码添加信号
标准
| 标准/扩展 | C 或 C++ | 依赖关系 |
|---|---|---|
POSIX.1
XPG4 XPG4.2 单一 UNIX 规范版本 3 |
两个 |
格式
#define _POSIX_SOURCE
#include <signal.h>
int sigaddset(sigset_t *set, int signal);一般描述
将信号添加到 set中已记录的信号集。
sigaddset () 是操纵信号集的一系列函数的一部分。 信号集 是允许进程跟踪信号组的数据对象。 例如,一个进程可以创建一个信号集来记录它阻塞的信号,另一个信号集来记录哪些信号处于暂挂状态。 通常,信号集用于操纵由其他函数 (如 sigprocmask ()) 使用的信号组或检查由其他函数 (如 sigpending ()) 返回的信号集。
在对 sigset_t 类型的每个对象进行任何其他使用之前,应用程序应至少对该对象调用一次 sigemptyset () 或 sigfillset ()。 如果此类对象未以此方式初始化,但仍作为参数提供给 pthread_sigmask () , sigaction () , sigaddset () , sigdelset () , sigismember () , sigpending () , sigprocmask () , sigsuspend () , sigtimedwait () , sigwait () 或 sigwaitinfo () 中的任何一个,那么结果未定义。
用法说明
此功能不支持使用 SIGTHSTOP 和 SIGTHCONT 信号。
返回值
如果将信号成功添加到信号集,那么 sigaddset () 返回 0。
如果不支持信号 ,则 sigaddset() 返回 -1 并将 errno 设为 EINVAL。
示例
CELEBS15
/* CELEBS15
This example adds a set of signals.
*/
#define _POSIX_SOURCE
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void catcher(int signum) {
puts("catcher() has gained control");
}
main() {
struct sigaction sact;
sigset_t sigset;
sigemptyset(&sact.sa_mask);
sact.sa_flags = 0;
sact.sa_handler = catcher;
sigaction(SIGUSR1, &sact, NULL);
puts("before first kill()");
kill(getpid(), SIGUSR1);
puts("before second kill()");
sigemptyset(&sigset);
sigaddset(&sigset, SIGUSR1);
sigprocmask(SIG_SETMASK, &sigset, NULL);
kill(getpid(), SIGUSR1);
puts("after second kill()");
}
output
before first kill()
catcher() has gained control
before second kill()
after second kill()