如果點陣圖中的某一位為1,就表示在執行當前信號的處理程式期間相應的信號暫時被“禁止”,使得在執行的過程中不會嵌套地回響那種信號。
為什麼對某一信號進行禁止呢?我們來看一下對CTRL_C的處理。大家知道,當一個程式正在運行時,在鍵盤上按一下CTRL_C,核心就會向相應的進程發出一個SIGINT 信號,而對這個信號的默認操作就是通過do_exit()結束該進程的運行。但是,有些應用程式可能對CTRL_C有自己的處理,所以就要為SIGINT另行設定一個處理程式,使它指向應用程式中的一個函式,在那個函式中對CTRL_C這個事件作出回響。但是,在實踐中卻發現,兩次CTRL_C事件往往過於密集,有時候剛剛進入第一個信號的處理程式,第二個SIGINT信號就到達了,而第二個信號的默認操作是殺死進程,這樣,第一個信號的處理程式根本沒有執行完。為了避免這種情況的出現,就在執行一個信號處理程式的過程中將該種信號自動禁止掉。所謂“禁止”,與將信號忽略是不同的,它只是將信號暫時“遮蓋”一下,一旦禁止去掉,已到達的信號又繼續得到處理。
Linux核心中有一個專門的函式集合來執行設定和修改信號掩碼,它們放在kernel/signal.c中,其函式形式和功能如下:
函式形式 功能 int sigemptyset(sigset_t *mask) 清所有信號掩碼的阻塞標誌
int sigfillset(sigset_t *mask, int signum) 設定所有信號掩碼的
阻塞標誌
int sigdelset(sigset_t *mask, int signum) 刪除個別信號阻塞
int sigaddset(sigset_t *mask, int signum) 增加個別信號阻塞
int sigisnumber(sigset_t *mask, int signum) 確定特定的信號是否在掩
碼中被標誌為阻塞。
另外,進程也可以利用sigprocmask() 系統調用改變和檢查自己的信號掩碼的值,其實現代碼在kernel/signal.c中,原型為:
int sys_sigprocmask(int how, sigset_t *set, sigset_t *oset)
其中,set是指向信號掩碼的指針,進程的信號掩碼是根據參數how的取值設定成set;參數how的取值及含義如下:
SIG_BOLCK set規定附加的阻塞信號;
SIG_UNBOCK set規定一組不予阻塞的信號
SIG_SETBLOCK set變成新進程的信號掩碼
用一段代碼來說明這個問題
switch (how) {
case SIG_BLOCK:
current->blocked |= new_set;
break;
case SIG_UNBLOCK:
current->blocked &= ~new_set;
break;
case SIG_SETMASK:
current->blocked = new_set;
break;
default:
return -EINVAL;
}
其中current為指向當前進程task_struc結構的指針。
第三個參數oset也是指向信號掩碼的指針,它將包含以前的信號掩碼值,使得在必要的時候,可以恢復它。
進程可以用sigpending()系統調用來檢查是否有掛起的阻塞信號。
相關詞條
-
Termios
將收到 SIGINT 信號。如果既未設定 IGNBRK 也未設定...。 NLDLY 新行延時掩碼。取值為 NL0 和 NL1。 CRDLY 回車延時掩碼。取值為 CR0, CR1, CR2, 或 CR3...
TERMIOS NAME DESCRIPTION 描述 c_iflag 標誌常量 -
碼分復用
已掩碼的符號流被組合以形成碼分復用(CDM)信號,並且利用另一個掩碼序列該CDM信號被進一步地進行掩碼,用於與一個和多個附加的信號進行碼分復用,以傳送到遠程站。在另一個實施例中,根據經掩碼的符號流形成了多個CDM信號...
簡介 發展歷史 特點 命令 碼分多路復用 -
mimo[多入多出技術]
各自獨立傳送信號,同時在接收端用多個天線接收並恢復原信息,就可以實現以更小...使用多個發射天線和接收天線,使信號通過發射端與接收端的多個天線傳送和接收...的數據信號映射到多根天線上傳送出去,接收端將各根天線接收到的信號進行空時...
原理 優點 潛力 發展歷史 MIMO技術 -
系統調用
進程,等待信號personality 設定進程運行域prctl 對進程進行...ftruncate 參見truncateumask 設定檔案許可權掩碼...
系統調用簡介 系統調用原理 系統調用接口 系統調用和普通調用的區別 -
Linux/UNIX系統編程手冊
圖書描述《Linux/UNIX系統編程手冊(上、下冊)》總共分為64章,主要講解了高效讀寫檔案,對信號、時鐘和定時器的運用,創建進程、執行程式...通信及同步 282.11 信號 292.12 執行緒 30...
圖書描述 作者簡介 目錄 -
實時陰影技術
總結第3章陰影圖的走樣3.1 陰影映射與信號重建3.2初始採樣...——線性信號處理與統計5.3.2方差陰影圖(Variance...計算每個獨立紋理顏色的位掩碼,並且用於所有對應這個顏色的光照採樣點...
作者簡介 圖書目錄 文摘 目錄 -
無線上網
Chinanet的Wlan信號,通過賬號認證方式上網。方式3:在電腦上安裝網卡,3G...),撥接。方式4:電腦在檢測到Chinanet的Wlan信號,通過賬號...或手機通過無線AP的WiFi信號上網。方式7:手機通過藍牙(無線方式)連...
無線定義 相關類型 基本特徵 相關知識 技術比較 -
守護進程
信號(例如中斷信號)也不應該影響先前在該終端啟動的任何守護進程的運行。雖然...“/”或“/tmp”等。改變工作目錄的常見函式是chdir。(4)重設檔案創建掩碼檔案創建掩碼是指禁止掉檔案創建時的對應位。由於使用fork函式新建的子進程繼承...
簡介 創建步驟 運行方式 特點 分類 -
IP[網路之間互連的協定]
基本原理網路互聯 NNT流量 網協是怎樣實現的?網路互連設備,如乙太網、分組交換網等,它們相互之間不能互通,不能互通的主要原因是...
基本原理 分片和重組 地址 IP協定 分類