typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t;
位元陣列表示信號集合,每位對應一個信號編號。
| 函數 | 功能 | 回傳 |
|---|---|---|
sigemptyset(set) | 清空信號集 | 0 成功, -1 失敗 |
sigfillset(set) | 填入所有信號 | 0/-1 |
sigaddset(set, signo) | 加入指定信號 | 0/-1 |
sigdelset(set, signo) | 移除指定信號 | 0/-1 |
sigismember(set, signo) | 檢查信號是否在集合中 | 1 是, 0 否, -1 錯誤 |
SIGHUP=1 SIGINT=2 SIGQUIT=3 SIGILL=4 SIGTRAP=5
SIGABRT=6 SIGBUS=7 SIGFPE=8 SIGKILL=9 SIGUSR1=10
SIGSEGV=11 SIGUSR2=12 SIGPIPE=13 SIGALRM=14 SIGTERM=15
SIGCHLD=17 SIGCONT=18 SIGSTOP=19 SIGTSTP=20 SIGTTIN=21
SIGTTOU=22 SIGURG=23 SIGXCPU=24 SIGXFSZ=25 SIGVTALRM=26
SIGPROF=27 SIGWINCH=28 SIGIO=29 SIGPWR=30
sigset_t block_set, old_set;
sigemptyset(&block_set);
sigaddset(&block_set, SIGINT);
sigaddset(&block_set, SIGTERM);
sigprocmask(SIG_BLOCK, &block_set, &old_set);
// 臨界區:SIGINT/SIGTERM 被阻塞
sigprocmask(SIG_SETMASK, &old_set, NULL); // 恢復
配合 sigprocmask 實現精確的信號阻塞/解除控制。