首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Linux C 編程:信號集 sigset_t 與操作函數完整指南

     編輯:關於C語言

信號集資料型別

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 實現精確的信號阻塞/解除控制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved